当前位置: 首页 > news >正文

解码C语言运算符

算术运算符

运算符 描述 示例 结果
+ 加法 5 + 3 8
- 减法 5 - 3 2
* 乘法 5 * 3 15
/ 除法 5 / 2 2
% 取模 5 % 2 1
++ 自增 a++ a+1
-- 自减 a-- a-1

注意:

  • 整数除法会截断小数部分
  • 取模运算只能用于整数类型

关系运算符

运算符 描述 示例 结果
== 等于 5 == 3 0
!= 不等于 5 != 3 1
> 大于 5 > 3 1
< 小于 5 < 3 0
>= 大于等于 5 >= 3 1
<= 小于等于 5 <= 3 0

C语言中前缀与后缀自增自减运算符的区别

基本概念

前缀形式(先增减)
  • ++variable:先自增,后使用
  • --variable:先自减,后使用
后缀形式(后增减)
  • variable++:先使用,后自增
  • variable--:先使用,后自减

区别对比表

特性 前缀形式 (++a, --a) 后缀形式 (a++, a--)
执行顺序 先增减,后使用 先使用,后增减
返回值 返回增减后的值 返回增减前的值
性能 通常更高效 可能稍低(需要临时变量)
常见用途 需要立即使用新值 需要先使用原值

代码示例

示例:基本区别
#include <stdio.h>int main() {int a = 5, b = 5;int x, y;// 前缀:先自增,后赋值x = ++a;printf("前缀: a = %d, x = %d\n", a, x); // a=6, x=6// 后缀:先赋值,后自增y = b++;printf("后缀: b = %d, y = %d\n", b, y); // b=6, y=5return 0;
}

逻辑运算符

运算符 描述 示例 结果
&& 逻辑与(全真为真,有假为假,若第一个为假则第二个不判断(短路) (5>3) && (2>1) 1
|| 逻辑或(全假为假,有真为真,若第一个为真则第二个不判断(短路)) (5>3) || (2<1) 1
! 逻辑非 !(5>3) 0

位运算符(以二进制形式进行位或)

运算符 描述 示例 结果
& 按位与 5 & 3 1
| 按位或 5 | 3 7
^ 按位异或 5 ^ 3 6
~ 按位取反 ~5 -6
<< 左移(移出丢弃,空出补0) 5 << 1 10
>> 右移(移出丢弃,空出补符号位) 5 >> 1 2

赋值运算符

运算符 描述 等价于
= 简单赋值 a = 5
+= 加后赋值 a += 5a = a + 5
-= 减后赋值 a -= 5a = a - 5
*= 乘后赋值 a *= 5a = a * 5
/= 除后赋值 a /= 5a = a / 5
%= 取模后赋值 a %= 5a = a % 5
&= 按位与后赋值 a &= 5a = a & 5
` =` 按位或后赋值
^= 按位异或后赋值 a ^= 5a = a ^ 5
<<= 左移后赋值 a <<= 5a = a << 5
>>= 右移后赋值 a >>= 5a = a >> 5

其他运算符

运算符 描述 示例
sizeof() 返回变量或类型的大小 sizeof(int)
& 取地址运算符 &a
* 指针运算符 *ptr
?: 条件运算符 a > b ? a : b
, 逗号运算符 a = (b=3, b+2)a=5
[] 下标运算符 arr[5]
-> 结构体指针成员访问 ptr->member
. 结构体成员访问 struct.member

运算符优先级

从高到低排列:

  1. () [] -> .
  2. ! ~ ++ -- + - * & (type) sizeof
  3. * / %
  4. + -
  5. << >>
  6. < <= > >=
  7. == !=
  8. &
  9. ^
  10. |
  11. &&
  12. ||
  13. ?:
  14. = += -= *= /= %= &= ^= |= <<= >>=
  15. ,

代码示例

#include <stdio.h>#include <stdio.h>int main() {// 算术运算符int a = 10, b = 3;printf("算术运算:\n");printf("%d + %d = %d\n", a, b, a + b);  // 10 + 3 = 13printf("%d / %d = %d\n", a, b, a / b);  // 10 / 3 = 3(整数除法,小数部分被截断)// 关系运算符printf("\n关系运算:\n");printf("%d > %d = %d\n", a, b, a > b);  // 10 > 3 = 1(真)// 逻辑运算符printf("\n逻辑运算:\n");printf("(%d>%d) && (%d<%d) = %d\n", a, b, a, b, (a>b) && (a<b));  // (10>3) && (10<3) = 0(真 && 假 = 假)// 位运算printf("\n位运算:\n");printf("%d & %d = %d\n", a, b, a & b);  // 10 & 3 = 2// 10的二进制: 1010, 3的二进制: 0011// 按位与结果: 0010 = 2// 赋值运算int c = a;      // c = 10c += 5;         // c = 10 + 5 = 15printf("\n赋值运算: c = %d\n", c);  // 输出: c = 15// 条件运算符int max = (a > b) ? a : b;  // 10 > 3 为真,所以 max = a = 10printf("最大值: %d\n", max);  // 输出: 最大值: 10return 0;
}
http://www.wxhsa.cn/company.asp?id=6936

相关文章:

  • 多进程
  • 93. 递归实现组合型枚举
  • Sort方法学习(伪代码记录)
  • 深入解析:【每日一问】运算放大器与比较器有什么区别?
  • 9.17支配对问题专题总结
  • 记录知识
  • AT_agc058_b [AGC058B] Adjacent Chmax
  • Jenkins CVE-2018-1000600漏洞利用与SSRF攻击分析
  • NOIP 集训日记(学术)
  • linux中mysql如何远程连接
  • 详细介绍:Python:OpenCV 教程——从传统视觉到深度学习:YOLOv8 与 OpenCV DNN 模块协同实现工业缺陷检测
  • 深入解析:PYcharm——pyqt音乐播放器
  • Day02
  • 专题:Python实现贝叶斯线性回归与MCMC采样数据可视化分析2实例|附代码数据
  • 威联通NAS如何导入本地docker镜像
  • 【学习笔记】拉格朗日插值
  • 一种将离散化状态方程映射为并行多处理器计算机的方法
  • 基本数据类型题目
  • 一种基于动作指令交互的动态活体检测技术,提升人脸识别安全性
  • [系统] Windows 已有office版本和visio不兼容的解决方案
  • CF 2127F Hamed and AghaBalaSar
  • AT_agc055_b [AGC055B] ABC Supremacy
  • “Sequential Thinking MCP Server 和codex等AI工具本身任务拆解功能对比
  • 基于错误xsleak 悬空标记 运用css利用帧计数 -- Pure leak ASIS CTF 2025
  • 网易伏羲:当算法遇见社交,解码游戏世界的连接密码
  • 在 CentOS 7 上安装Nginx和配置http代理
  • 题解:P2624 [HNOI2008] 明明的烦恼
  • 在AI技术快速实现创想的时代,挖掘新需求成为核心竞争力——某知名DevOps学习平台需求洞察
  • Windows Powershell 获取版本version
  • XXL-JOB (1)