运算符和表达式概念
-
- 通过运算符
- 操作符
- 单目:一个操作数
- 双目:两个
- 三目:三个(条件?:)
- 优先级:!>算术>关系>&&>||>条件>赋值>逗号
- 结合性
算术运算符
-
- 注意:%取模的两个操作数只能为整数
- 注意:前自增/前自减先后引用后计算(后的:先引用,后自增)
赋值运算符
-
- '='不是等于。是赋值
- 专业术语
- s数据对象:用于存储数据存储区域统称为数据对象
2. 左值:用于标识一个特定的数据对象的名字或表达式(等号左边)
1. 特性:可修改;数据对象的标识符;不能为常量
3. 右值:(rvalue)是可赋值给左值的量
逻辑运算符
- 逻辑真和假(非0和0)
- !:非
- &&:与都为真才真
- ||:或。一个为真即可
位运算
- 按位与:&
- 按位或:|
- 取反:~
- 异或:^
应用
- 判断奇偶性
- 高低位互换
a=(a>>8)|(a<<8);
- 寄存器的置位
a=a|0x08;//置1
a=a|(1<<3);//相同功能
a=a&(~0x08);//取反第三位
a=a&(~(1<<3));
逗号运算符
- 将两个表达式连接起来
- 表达式1;表达式2
- 结合性:从右到左,先1后2
a=3;
b=a*2,a+=4;
- 整个表达式是表达式1的值
条件运算符(取最大值)
- 条件运算符通过问号"?"和冒号":"连接的表达式
- 表达式1?表达式2:表达式3
- 执行逻辑
- 如果表达式1的结果为真,则整个表达式结果为2的结果,否则为表达式3的结果
- 示例
printf("%d\n",3>4?3:4);