C语言教学第三课:运算符与表达式

一、课程导入

同学们,上节课我们学习了变量和数据类型,这些是C语言的基础。今天,我们将继续深入学习C语言中的运算符与表达式。运算符是C语言中用于执行各种操作的符号,而表达式则是由变量、常量和运算符组成的有意义的组合。通过运算符和表达式,我们可以实现复杂的计算和逻辑操作。

二、运算符分类

(一)算术运算符

  1. 基本算术运算符

    • 加(+)、减(-)、乘(*)、除(/)、取模(%)。

    • 示例:

      int a = 10, b = 3;
      int sum = a + b; // 加法
      int diff = a - b; // 减法
      int product = a * b; // 乘法
      int quotient = a / b; // 除法
      int remainder = a % b; // 取模
    • 注意:取模运算符%只能用于整数运算。

    • 输出结果:

      sum = 13
      diff = 7
      product = 30
      quotient = 3
      remainder = 1
  2. 自增与自减运算符

    • 自增(++)和自减(--)运算符用于将变量的值增加或减少1。

    • 示例:

      int x = 5;
      x++; // x = 6
      x--; // x = 5

(二)关系运算符

  1. 概念

    • 用于比较两个值之间的关系,返回布尔值(0表示假,1表示真)。

  2. 常见的关系运算符

    • 大于(>)、小于(<)、等于(==)、不等于(!=)、大于等于(>=)、小于等于(<=)。

    • 示例:

      int a = 10, b = 20;
      int result1 = (a > b); // 0
      int result2 = (a < b); // 1
      int result3 = (a == b); // 0
      int result4 = (a != b); // 1

(三)逻辑运算符

  1. 概念

    • 用于组合多个逻辑表达式,返回布尔值。

  2. 常见的逻辑运算符

    • 逻辑与(&&)、逻辑或(||)、逻辑非(!)。

    • 示例:

      int a = 10, b = 20;
      int result1 = (a > 0 && b > 0); // 1
      int result2 = (a > 0 || b < 0); // 1
      int result3 = !(a == b); // 1

(四)赋值运算符

  1. 基本赋值运算符

    • =:将右边的值赋给左边的变量。

    • 示例:

      int a = 10;
  2. 复合赋值运算符

    • +=-=*=/=%=等。

    • 示例:

      int a = 10;
      a += 5; // 等价于 a = a + 5,结果为15
      a -= 3; // 等价于 a = a - 3,结果为12

(五)位运算符

  1. 概念

    • 用于对变量的二进制位进行操作。

  2. 常见的位运算符

    • 按位与(&)、按位或(|)、按位异或(^)、按位取反(~)、左移(<<)、右移(>>)。

    • 示例:

      int a = 5; // 二进制:0101
      int b = 3; // 二进制:0011
      int result1 = a & b; // 0001,结果为1
      int result2 = a | b; // 0111,结果为7
      int result3 = a ^ b; // 0110,结果为6

三、表达式

(一)概念

  1. 表达式

    • 由变量、常量和运算符组成的有意义的组合,最终会产生一个值。

    • 示例:

      int result = 10 + 20 * 2; // 表达式计算结果为50

(二)运算符优先级

  1. 优先级规则

    • 不同的运算符有不同的优先级,优先级高的运算符先计算。

    • 示例:

      int result = 10 + 20 * 2; // 先计算乘法,再计算加法,结果为50
  2. 括号的使用

    • 使用括号可以改变运算顺序。

    • 示例:

      int result = (10 + 20) * 2; // 先计算括号内的加法,再计算乘法,结果为60

四、练习

  1. 练习题

    • 定义两个整型变量ab,分别赋值为15和5。

    • 计算并打印以下表达式的值:

      • a + b

      • a - b

      • a * b

      • a / b

      • a % b

    • 使用逻辑运算符判断a是否大于b,并打印结果。

    • 使用位运算符计算a & ba | b,并打印结果。

  2. 参考答案

    #include <stdio.h>int main() {int a = 15, b = 5;printf("a + b = %d\n", a + b);printf("a - b = %d\n", a - b);printf("a * b = %d\n", a * b);printf("a / b = %d\n", a / b);printf("a %% b = %d\n", a % b);if (a > b) {printf("a > b\n");} else {printf("a <= b\n");}printf("a & b = %d\n", a & b);printf("a | b = %d\n", a | b);return 0;
    }

五、课堂总结

学习了C语言中的运算符和表达式。运算符是C语言中用于执行各种操作的符号,包括算术运算符、关系运算符、逻辑运算符、赋值运算符和位运算符。表达式则是由变量、常量和运算符组成的有意义的组合。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/69001.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Maven全解析:从基础到精通的实战指南

概念&#xff1a; Maven 是跨平台的项目管理工具。主要服务基于 Java 平台的构建&#xff0c;依赖管理和项目信息管理项目构建&#xff1a;高度自动化&#xff0c;跨平台&#xff0c;可重用的组件&#xff0c;标准化的流程 依赖管理&#xff1a; 对第三方依赖包的管理&#xf…

MATLAB实现单层竞争神经网络数据分类

一.单层竞争神经网络介绍 单层竞争神经网络&#xff08;Single-Layer Competitive Neural Network&#xff09;是一种基于竞争学习的神经网络模型&#xff0c;主要用于数据分类和模式识别。其核心思想是通过神经元之间的竞争机制&#xff0c;使得网络能够自动学习输入数据的特…

Weevely代码分析

亲测php5和php8都无效&#xff0c;只有php7有效 ailx10 1949 次咨询 4.9 网络安全优秀回答者 互联网行业 安全攻防员 去咨询 上一次做weevely实验可以追溯到2020年&#xff0c;当时还是weevely3.7&#xff0c;现在的是weevely4 生成php网页木马依然差不多…… php菜刀we…

【AI大模型】DeepSeek API大模型接口实现

目录 一、DeepSeek发展历程 2023 年&#xff1a;创立与核心技术突破 2024 年&#xff1a;开源生态与行业落地 2025 年&#xff1a;多模态与全球化布局 性能对齐 OpenAI-o1 正式版​ 二、API接口调用 1.DeepSeek-V3模型调用 2.DeepSeek-R1模型调用 三、本地化部署接口调…

具身智能-强化学习-强化学习基础-马尔可夫

文章目录 参考强化学习基础强化学习特点reward函数两种强化学习两种策略&#xff1a;探索&#xff08;Exploration&#xff09; vs. 利用&#xff08;Exploitation&#xff09;gym库的使用 马尔可夫马尔可夫过程马尔可夫奖励过程&#xff08;Markov Reward Process, MRP&#x…

半导体器件与物理篇5 mosfet及相关器件

认识mos二极管 MOS二极管是研究半导体表面特性最有用的器件之一。MOS二极管可作为存储电容器&#xff0c;并且是电荷耦合器件(CCD)的基本结构单元。 MOS二极管结构的重要参数包括&#xff1a;氧化层厚度d&#xff1b;施加于金属平板上的电压V&#xff08;正偏压时V为正&#x…

pandas习题 071:字典元素列表构造 DataFrame

(编码题)以下有一个列表嵌套字典 data,列表中的每个字典 fields 中的列表为每行数据的值,另有一个 col 为列名,利用这两个数据构造一个 DataFrame。 data = [{fields: [2024-10-07T21:22:01, USER-A, 21, 0,

037 DFS回溯

1.回溯模板求排列 2.回溯模板求子集 # 当前位于点x&#xff0c;步长为length def dfs(x,length):passvis[x]length #接下来走下一个点 #判断下一个点是否走过if vis[a[x]]!0:#此时存在环global ansansmax(ans,length-vis[a[x]]1)else:dfs(a[x],length1)nint(input()) a[0]list(…

#systemverilog# Verilog与SystemVerilog发展历程及关系

1. Verilog的发展历史 1984年:Gateway Design Automation公司开发了Verilog,最初作为专有语言,用于逻辑仿真和数字电路设计。 1990年:Cadence收购Gateway,Verilog逐步开放,成为行业标准。 1995年(IEEE 1364-1995):首个IEEE标准,即Verilog-1995,定义基础语法和仿真语…

Kafka流式计算架构

引言 Kafka 凭借其卓越的架构设计&#xff0c;具备极为高效的流式计算能力&#xff0c;在海量数据环境下&#xff0c;依然能够以惊人的速度实现消息的高性能消费&#xff0c;轻松应对高并发、低延迟的严苛业务需求。无论是实时数据处理、复杂事件分析&#xff0c;还是大规模数…

RK3568使用QT搭建TCP服务器和客户端

文章目录 一、让RK3568开发板先连接上wifi二、客户端代码1. `widget.h` 文件2. `widget.cpp` 文件**详细讲解**1. **`Widget` 类构造函数 (`Widget::Widget`)**2. **UI 布局 (`setupUI`)**3. **连接按钮的槽函数 (`onConnectClicked`)**4. **发送消息按钮的槽函数 (`onSendMess…

解决 LeetCode 922 题:按奇偶排序数组 II

解决 LeetCode 922 题&#xff1a;按奇偶排序数组 II 题目描述 给定一个非负整数数组 nums&#xff0c;其中一半整数是奇数&#xff0c;一半整数是偶数。要求对数组进行排序&#xff0c;以便当 nums[i] 为奇数时&#xff0c;i 也是奇数&#xff1b;当 nums[i] 为偶数时&#…

redis教程

Redis 教程 Redis 是一个开源的内存数据结构存储系统&#xff0c;用作数据库、缓存和消息代理。以下是一些基础知识和常用操作。 一、简介 Redis 支持多种数据结构&#xff0c;如字符串、哈希、列表、集合、有序集合等。它具有高性能、高可用性和数据持久化的特性。 二、安…

力扣988. 从叶结点开始的最小字符串

Problem: 988. 从叶结点开始的最小字符串 文章目录 题目描述思路复杂度Code 题目描述 思路 遍历思想(利用二叉树的先序遍历) 在先序遍历的过程中&#xff0c;用一个变量path拼接记录下其组成的字符串&#xff0c;当遇到根节点时再将其反转并比较大小&#xff08;字典顺序大小&…

本地Ollama部署DeepSeek R1模型接入Word

目录 1.本地部署DeepSeek-R1模型 2.接入Word 3.效果演示 4.问题反馈 上一篇文章办公新利器&#xff1a;DeepSeekWord&#xff0c;让你的工作更高效-CSDN博客https://blog.csdn.net/qq_63708623/article/details/145418457?spm1001.2014.3001.5501https://blog.csdn.net/qq…

Codeforces Round 1002 (Div. 2)(部分题解)

补题链接 A. Milya and Two Arrays 思路&#xff1a;题意还是比较好理解&#xff0c;分析的话我加了一点猜的成分&#xff0c;对a&#xff0c;b数组的种类和相加小于4就不行&#xff0c;蒋老师的乘完后小于等于2也合理。 AC代码&#xff1a; #include <bits/stdc.h> u…

几种用户鉴权的方式对比

几种用户鉴权的方式对比 最近也要准备秋招&#xff0c;刚好整理下前后端一般采用的几种鉴权方式。 一、传统用户鉴权 详细步骤 用户登录 用户通过前端提交用户名和密码到后端服务器&#xff0c;后端服务器验证用户名和密码是否正确。如果验证成功&#xff0c;后端生成一个 s…

基于springboot+vue的航空散货调度系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

区块链的核心原理:加密算法、共识机制与分布式账本

区块链&#xff08;Blockchain&#xff09;技术自比特币诞生以来&#xff0c;已经从一个单纯的数字货币系统演变为广泛应用于金融、供应链、医疗、政府等多个领域的技术架构。作为一种去中心化的分布式账本技术&#xff0c;区块链的核心原理主要依赖于三个关键组成部分&#xf…

算法总结-二分查找

文章目录 1.搜索插入位置1.答案2.思路 2.搜索二维矩阵1.答案2.思路 3.寻找峰值1.答案2.思路 4.搜索旋转排序数组1.答案2.思路 5.在排序数组中查找元素的第一个和最后一个位置1.答案2.思路 6.寻找旋转排序数组中的最小值1.答案2.思路 1.搜索插入位置 1.答案 package com.sunxi…