# 四.运算符 ## 1.运算符概念 - 在运算符左边的称为左值,在右边即为右值。 - 优先级问题,有括号先算括号,再加减乘除。 - 结合性问题,有两种: - 自左而右 - 自右而左 - 优先级结合性表 ![](C:\Users\Administrator\Documents\markdown文档\C语言\images\运算符对照表.png) ## 2.基本运算符 #### 2.1赋值运算符 在C语言中,”=“为赋值运算符,将等号右边的值赋给左边。 #### 2.2算数运算符 算符运算符包括加减乘除取余,即:‘+’ ‘—’ ‘* ‘ ’/‘ '%',值得注意的是在C语言中*不可以省略,而且/,自动取整,取余的正符只跟被取余的数有关。 #### 2.3位运算符 - 取反运算符:~操作数;一目运算符;取反运算符将整数转换为二进制数,按位取反,即0变1,1变0; - 位与运算符:操作数1&操作数2;二目运算符;将两个操作数转换为二进制数,然后进行比较,如果两个对应的数都为1,则为1,否则为0; - 位或运算符:操作数1|操作数2;二目运算符;将两个操作数转换为二进制数,然后进行比较,如果两个对应的两个数都为0,则为0;否则为1; - 位异或运算符:操作数1^操作数2;二目运算符;将两个操作数转换为二进制数,然后进行比较,如果两个对应的两个数相同时,则运算结果为0;否则为1; #### 2.4复合运算符 - 扩展赋值运算 **+=,-=,\*=,/=,%=** ```c int b,a; a+=b; //等于a=a+b a-=b; //等于a=a-b a*=b; //等于a=a*b a/=b; //等于a=a/b a%=b; //等于a=a%b ``` ## 3.特殊运算符 - 自增自减:++ ——;运算符在操作数前面则先自增或者减再运算,运算符在操作数后面则先进行运算再自增自减 - 三目运算符:操作数1?操作数2:操作数3;如果操作数1为真则运算结果为操作数2,如果操作数1为假,则运算结果为操作数3; - 逗号运算符:有效值为最后一个值; - sizeof运算符:编译器统计字节数; ## 4.逻辑运算符 #### 4.1成立与不成立: - 在C语言中,0表示不成立,1表示成立。0表示假,非0表示真。 #### 4.2条件运算符 - 等于 ;== - 不等于;!= - 大于等于;> = - 小于等于;<= #### 4.3逻辑运算符 - 逻辑与;&&:表达式1 && 表达式2,只有所有表达式都为true,则整个表达式的运算结果才为true。根据集合的补集的思想,只要任意表达式为false,则整个表达式的运算结果为false。 - 逻辑或;||:达式1 || 表达式2,只要任意表达式为true,则整个表达式的运算结果为true。 - 逻辑非 - 短路原则:表达式1 || 表达式2 || 表达式3...|| 表达式n,如果表达式1的运算结果为true,则整个表达式的结果为true,同时不会再对后面的表达式2、表达式3到表达式n进行运算判断。如果表达式1的运算结果为false,则根据表达式2的运算结果继续判断。 表达式1 && 表达式2 && 表达式3...&& 表达式n,如果表达式1的运算结果为false,则整个表达式的结果为false,同时不会再对后面的表达式2、表达式3到表达式n进行运算判断。如果表达式1的运算结果为true,则根据表达式2的运算结果继续判断。