C语言操作符总结:
分类:算术操作符,移位操作符,位操作符,赋值操作符,复合操作符,单目操作符,
关系操作符,逻辑操作符,条件操作符,逗号表达式,下标引用、函数调用和结构成员。
一、算术操作符——“+,-,*,/,%”*
注:
(1)%(求余)操作符的两个操作数必须为整数,返回的是整除之后的余数。而其他操作符可以用于整数和浮点数。
(2)/(除法)操作符的两个操作数若都为整数,执行整数除法。而只要有浮点数就执行浮点数除法。
二、移位操作符——“右移>> , 左移<<”
(1)左移操作符移位规则:左边抛弃,右边补0
(2)右移操作符移位规则:
①逻辑移位:左边用0填充,右边抛弃,无符号数据移位遵守逻辑移位
②算术移位:左边用原该值的符号位填充,右边抛弃,有符号数据移位遵守算术移位
警告:对于移位操作符,不要移动负数位,这是标准未定义的。
三、位操作符(按比特位)——“&,|,^,~”
(1)&:按位与(遇0则0)
(2)|:按位或(遇1则1)
(3)^:按位异或(相同为0,相异为1)
(4)~:按位取反(遇0变1,遇1变0)
注:位操作符的操作数必须是整数。
四、赋值操作符——“=”
该操作符可以连续使用,但不建议这样使用,注意区分等号“==”
五、复合操作符——“+=,-=,=,/=,%=,>>=,<<=,&=,|=,^=,”
作用只是简化代码,仅此而已
六、单目操作符——“!,+,-,&,sizeof,~,--,++,,(类型)”
(1)!:逻辑反操作
(2)+:正值
(3)-:负值
(4)&:取地址
注:数组名——是一个数组中首元素的地址
&数组名——是指整个数组的地址
(5)sizeof:操作数的类型长度,以字节为单位
注:①sizeof是一个操作符,它不是一个函数。
②sizeof内部表达式不参与运算。
③源文件要变成可执行文件需要通过编译和执行两个过程,sizeof操作符是在编译时就可以得知数的类型的字节数。
④ sizeof( a ) / sizeof( a[ 0 ] )可以求一个数组的大小,在哪里定义数组就在哪里使用该表达式。
(6)~:对一个数的二进制按位取反
(7)--: ①前置--:先减1,后赋值
②后置--:先赋值,后减1
(8)++: ①前置++:先加1.后赋值
②后置++:先赋值,后加1
(9):间接访问操作符(解引用操作符):可以决定访问多大的空间 。
(10)(类型):强制类型转换
七、关系操作符——“>,>=,<,<=,!=,==”
八、逻辑操作符——“&&,||”
(1)&&:逻辑与(两个同时为真则为真)
(2)||:逻辑或(两个同时为假则为假)
注:区分按位与&和按位或|
①int i=0,a=0,b=2,c=3,d=4;
i = a++&&++b&&d++;
因为a++值为0,0逻辑与任何数都为0,所以后面的表达式不再计算,仍为原来的值。
②int i=0,a=0,b=2,c=3,d=4;
i = a++||++b||d++;
因为++b值为1,1逻辑或任何数都为1,所以后面的表达式不再计算,仍为原来值。
九、条件操作符(三目操作符)——“exp1 ? exp2 : exp3 ”
意思是表达式1是否成立?成立的话执行表达式2,否则执行表达式3。
十、逗号表达式——“exp1, exp2, exp3, …expN ”
用逗号隔开的多个表达式,从左到右依次执行,整个表达式的结果是最后一个表达式的结果。
十一、下标引用,函数调用和结构成员 ——“[],(),.,->”*
(1)下标引用操作符[]
操作数:一个数组名+一个索引值
(2)函数调用操作符()
接受一个或多个操作数,第一个操作数是函数名,剩余的操作数就是传递给函数的参数。
(3)访问一个结构体的成员
①结构体.成员名
②结构体指针->成员名
原文地址:https://blog.51cto.com/14235507/2376263