操作符学习笔记
1.算术操作符
+,-,*,/,%
1.求模只能用在整型
2.除法运算当被除数、除数为整型时结果自动取整
int a = 9/2; //a = 4
double b = 9/2; //b = 4.000000
double c = 9.0/2;//c = 4.500000
2.移位操作符
左移操作符 <<
右移操作符 >>
3.位操作符
&:按位与
|:按位或
^ :异或 a ^ a=0;a ^ 0=a
//计算补码
// 3:00000000 00000000 00000000 00000011
//-2:11111111 11111111 11111111 11111110
int a = 3;
int b = -2;
int c = a & b;//都为1才为1 00000000 00000000 00000000 00000010
printf("%d\n",c);//有符号打印c=2
int d = a | b;//有1为1 11111111 11111111 11111111 11111110
printf("%d\n",d);//有符号打印d=-1
int e = a ^ b;//相同为0 11111111 11111111 11111111 11111101
printf("%d\n",e);//有符号打印e=-3
4.赋值操作符
= += -= *= /= <<= >>= &= |= ^=
连续赋值从右到左执行
5.单目操作符
只有一个操作数的操作符
非运算 !
int a = 5;
int b = !a;
int c = 0;
int d = !c;
printf("%d\n", b);//0
printf("%d\n", d);//1 规定真默认为1
负号 - 正号 +
取地址符 &
间接访问操作符 *
sizeof 计算变量或类型创建变量的内存大小
区分strlen:计算字符串长度
sizeof内部的表达式不参与运算
二进制按位取反 ~
包括符号位
– ++
int a = 10;
int b = a++;//后置++
printf("%d\n", b);//10
printf("%d\n", a);//11
int c = ++a;//前置++
printf("%d\n", c);//12
printf("%d\n", a);//12
6.关系操作符
< <= > >= != ==
7.逻辑操作符
&& ||
a&&b:a为假则不执行b
a||b:a为真则不执行b
8.条件操作符
exp1?exp2:exp3
9.逗号表达式
用逗号隔开的多个表达式,从左向右执行
整个表达式的结果是最后一个表达式的结果