算数操作符
+ - *乘以 /除以 %取余 //整型除以整型得到的结果也是整型,整型除以一个浮点型得到的则是浮点型; %为相除后得到的余数
移位操作符
>>右移 <<左移 这个移位指的是左右移动二进制位,比如int数据是4个字节,32个bit,即32个二进制位,举个实例更容易理解: #includeint main() { int a = 1;//a的二进制表达形式为00000000000000000000000000000001 printf("%d", a<<1);//输出a左移一个二进制位的结果,即a的二进制表达变为了00000000000000000000000000000010,输出结果应为2 return 0; }
位操作符
&与 ^异或 |或//待补充
赋值操作符
= 把右边操作数的值赋给左边操作数
+= 加且赋值运算符,把右边操作数加上左边操作数的结果赋值给左边操作数,C+=A相当于C=C+A
-= 减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数,C-=A相当于C=C-A
*= 乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操作数,C*=A相当于C=C*A
/= 乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操作数,C/=A相当于C=C/A
%= 求模且赋值运算符,求两个操作数的模赋值给左边操作数,C%=A相当于C=C%A
^= 按位异或且赋值运算符,C ^= 2 等同于 C = C ^ 2
|= 按位或且赋值运算符,C |= 2 等同于 C = C | 2
>>= 右移且赋值运算符,C >>= 2 等同于 C = C >> 2
<<= 左移且赋值运算符,C <<= 2 等同于 C = C << 2
单目操作符
! 逻辑反操作 假0,真则非0,比如: #includeint main() { int a = 0;//a为假 printf("%d", !a);//逻辑取反,默认非0为1; return 0; } - 负值 + 正值 & 取地址 sizeof 操作数的类型长度(以字节为单位) ~ 整数在内存以补码储存,而进行表达则转为原码。~对一个数的二进制按位取反,不考虑符号位,一个整数的二进制表示有三种:原码,反码,补码。比如: #include int main() { int a = 0;//a以补码形式储存,正数的补码和原码反码都相同,所以0的二进制形式为:00000000000000000000000000000000 printf("%d", ~a);//以补码形式全部取反,补码变为11111111111111111111111111111111,反码=补码-1,即11111111111111111111111111111110,原码=反码除符号位其余取反=10000000000000000000000000000001,所以输出数值应为-1 return 0; } -- 前置:先--,后使用 后置:先使用,后-- ++ 前置:先++,后使用 后置:先使用,后++ * 间接访问操作符(引用操作符) (类型) 强制类型转换 例如(int)3.14输出后为3
关系操作符
> >= < <= !=不等于 ==等于
逻辑操作符
&&逻辑与,两者都为真,才为真 ||逻辑或,两者中一个为真,则为真 !逻辑反操作符,用来逆转逻辑真假
条件操作符(三目操作符)
?:
exp1 ? exp2 :exp3
含义:若exp1成立,则exp2计算,整个表达式结果为exp2的结果
含义:若exp1不成立,则exp3计算,整个表达式结果为exp3的结果
如:输出一个较大值的程序
#include
int main()
{
int a = 0;
int b = 3;
int max= 0;
max=a > b ? a : b;//如果a大于b,则max=a,否则max=b:
printf("%d",max);//输出max数值
return 0;
}
逗号表达式:逗号隔开的一串表达式,从左向右依次计算,整个表达式的结果是最后一个表达式的结果。(exp1,exp2,exp3)结果就是exp3;
比如
#includeint main() { int a = 0; int b = 3; int c= 0; c = (a + b, b + c, b*2);//逗号运算符,输出的就是最后一个表达式的结果 printf("%d",c);//c=6 return 0; }
下标引用,函数调用,结构成员
[] 在数组中,下标引用[],比如arr[0],表示取数组arr第一个元素
() 调用函数的时候,函数后面的()就是函数调用操作符
. 在结构体中,结构体变量.成员变量
-> 结构体指针->成员名



