Appearance
优先级
C 语言中的运算符按照优先顺序是 :
单 , 算 , 关 , 逻 , 条 , 赋 , 逗
- 单目运算符 : 只有一个操作参数, 比如
-num,n++...... - 双目运算符 : 需要两个操作参数, 比如
a+b,3*5...... - 三目运算符 : 需要三个操作参数,
a ? b : c
表达式
- 由操作参数合运算符返回一个确定值的式子叫做表达式
- 操作数 : 参与运算的数据. 常量, 变量, 或者表达式.
- 运算符 : 执行特定运算的符号
左值和右值
- 左值 ( lvalue ) 和右值 ( rvalue ) 是对于赋值运算符而言的
- 左值 : 既能放在等号左侧的值 , 也能放在等号右侧的值 ( 有内存空间地址 )
- 右值 : 只能放在等号右侧的值 , 如常量 , 表达式结果
算术运算符
+,-,*,/,%......除法:
左右整数时返回整数, 5/2 = 2
有小数参与时返回小数, 5.0/2 = 2.5
整数除10, 相当于砍掉个位
除数不能为 0 ( 编译能通过, 但运行出错 )
模运算:
相除后的余数部分
两侧只能是整数
关系运算符
>,<,==,>=,<=,!=- 返回整数 0/1
- 两边都是合法表达式
逻辑运算符
&&,||,!- 优先级
!,&&,|| - 结果是整数 0/1
- 两边是合法表达式
- 短路
条件表达式
- 唯一三目运算符
- 表达式 ? 表达式 : 表达式
赋值运算符
=: 一般的赋值运算符+=,*=... : 复合赋值运算符- 赋值运算符的联级使用:
a = b = 6
位运算符
#TBD/LV2
sizeof
在 C 语言中, sizeof 不是运算符而是单目运算符, 我们通常写 sizeof(n) 其实类似其他单目运算符 ++(n) 这样子, sizeof 中的表达式中的变量名不会被求值, 所以 sizeof 的运算符不会改变:
c
int a = 10;
int size = sizeof(a++);
printf("a = %d, size = %d\n", a, size);输出的结果任然为 a = 10 .