目录
位运算符
- 按位与:按位运算,都为1时得1
- 按位或:按位运算,只要有一个为1,其结果就为1
- 按位异或:相异为真,相同为假
- 按位取反:一元运算符,每个二进制位逐一取反
- 左移:比如a<<n,其代表a按照二进制向左移动n位,最高的n位舍弃,最低的则需用0补齐
- 右移:与左移类似,只是运算符如果是一个有符号的整数则补齐符号位,无符号整数则最高补0
自增自减
- ++i --i :在使用i之前,使i的值加1或减1
- i++ i-- :在使用i之后,使i的值加1或减1
总结下来就是符号在前先加减,后运算;符号在后就先加减,后加减
要注意的是,它们的结合性是自右向左的
比如
int i=3,j;
j=++i
这个就是先对i进行加减,然后再把值赋给j,最后我们就可以得到j的值为4
j=i--时则是先赋值,在对i进行变换
自增自减只用于变量,是不能用于常量和表达式的
赋值(=)
结合性:自右向左
【变量】=【表达式】
表达式可以是任意的变量,没有要求,甚至可以是变量和另一个赋值表达式。但格式左边一定是变量,且二者数据类型应该相同,如果类型不一致时,系统会自动将表达式的值转换为被赋值变量的数据类型。
#include<stdio.h>
int main()
{
int j;
j=2.5;
printf("j=%d",j);
}
那,根据赋值运算,运行的结果就是j=2,而非j=2.5
复合赋值运算符:
当赋值运算左侧表达式参与右侧表达式时,复合赋值运算符可以起到一个简写的作用
表达式1 op=表达式2——表达式1=表达式1 op 表达式2
a+=b-1 —— a=a+(b-1)
复合赋值运算符优先级等同于赋值运算符的优先级,结合性也同样是自右向左
逗号(,)
逗号运算符是将几个表达式隔开并以此计算
优先级最低
结合性为自左向右
在整个表达式中,其值为最后一个表达式的值
条件(?)
本质为程序控制
条件表达式用来判断一个程序表达式的结果,为真,执行某个表达式;为假,则执行另一个表达式
优先级低于逻辑表达式,高于赋值表达式
结合性:自右向左
int max,a=5,b=3
max=a>b?a:b;
在以上运算中,a>b为真,所以a为整个表达式的值,所以最后运行结果max=5