运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C语言内置了丰富的运算符,并提供了以下类型的运算符:算术运算符关系运算符逻辑运算符位运算符赋值运算符杂项运算符 一、算术运算符 下表显示了C语言支持的所有算术运算符。假设变量A的值为10,变量B的值为20,则: 实例 请看下面的实例,了解C语言中所有可用的算术运算符: 实例 includestdio。h intmain() { inta21; intb10; intc; cab; printf(Line1c的值是d,c); cab; printf(Line2c的值是d,c); cab; printf(Line3c的值是d,c); cab; printf(Line4c的值是d,c); cab; printf(Line5c的值是d,c); ca;赋值后再加1,c为21,a为22 printf(Line6c的值是d,c); ca;赋值后再减1,c为22,a为21 printf(Line7c的值是d,c); } 当上面的代码被编译和执行时,它会产生下列结果: Line1c的值是31 Line2c的值是11 Line3c的值是210 Line4c的值是2 Line5c的值是1 Line6c的值是21 Line7c的值是22 以下实例演示了a与a的区别: 实例 includestdio。h intmain() { intc; inta10; ca; printf(先赋值后运算:); printf(Line1c的值是d,c); printf(Line2a的值是d,a); a10; ca; printf(Line3c的值是d,c); printf(Line4a的值是d,a); printf(先运算后赋值:); a10; ca; printf(Line5c的值是d,c); printf(Line6a的值是d,a); a10; ca; printf(Line7c的值是d,c); printf(Line8a的值是d,a); } 以上程序执行输出结果为: 先赋值后运算: Line1c的值是10 Line2a的值是11 Line3c的值是10 Line4a的值是9 先运算后赋值: Line5c的值是11 Line6a的值是11 Line7c的值是9 Line8a的值是9 二、关系运算符 下表显示了C语言支持的所有关系运算符。假设变量A的值为10,变量B的值为20,则: 实例 请看下面的实例,了解C语言中所有可用的关系运算符: 实例 includestdio。h intmain() { inta21; intb10; intc; if(ab) { printf(Line1a等于b); } else { printf(Line1a不等于b); } if(ab) { printf(Line2a小于b); } else { printf(Line2a不小于b); } if(ab) { printf(Line3a大于b); } else { printf(Line3a不大于b); } 改变a和b的值 a5; b20; if(ab) { printf(Line4a小于或等于b); } if(ba) { printf(Line5b大于或等于a); } } 当上面的代码被编译和执行时,它会产生下列结果: Line1a不等于b Line2a不小于b Line3a大于b Line4a小于或等于b Line5b大于或等于a 三、逻辑运算符 下表显示了C语言支持的所有关系逻辑运算符。假设变量A的值为1,变量B的值为0,则: 实例 请看下面的实例,了解C语言中所有可用的逻辑运算符: 实例 includestdio。h intmain() { inta5; intb20; intc; if(ab) { printf(Line1条件为真); } if(ab) { printf(Line2条件为真); } 改变a和b的值 a0; b10; if(ab) { printf(Line3条件为真); } else { printf(Line3条件为假); } if(!(ab)) { printf(Line4条件为真); } } 当上面的代码被编译和执行时,它会产生下列结果: Line1条件为真 Line2条件为真 Line3条件为假 Line4条件为真 四、位运算符 位运算符作用于位,并逐位执行操作。、和的真值表如下所示: 假设如果A60,且B13,现在以二进制格式表示,它们如下所示: A00111100 B00001101 AB00001100 AB00111101 AB00110001 A11000011 下表显示了C语言支持的位运算符。假设变量A的值为60,变量B的值为13,则: 实例 请看下面的实例,了解C语言中所有可用的位运算符: 实例 includestdio。h intmain() { unsignedinta60;6000111100 unsignedintb13;1300001101 intc0; cab;1200001100 printf(Line1c的值是d,c); cab;6100111101 printf(Line2c的值是d,c); cab;4900110001 printf(Line3c的值是d,c); ca;6111000011 printf(Line4c的值是d,c); ca2;24011110000 printf(Line5c的值是d,c); ca2;1500001111 printf(Line6c的值是d,c); } 当上面的代码被编译和执行时,它会产生下列结果: Line1c的值是12 Line2c的值是61 Line3c的值是49 Line4c的值是61 Line5c的值是240 Line6c的值是15 五、赋值运算符 下表列出了C语言支持的赋值运算符: 实例 请看下面的实例,了解C语言中所有可用的赋值运算符: 实例 includestdio。h intmain() { inta21; intc; ca; printf(Line1运算符实例,c的值d,c); ca; printf(Line2运算符实例,c的值d,c); ca; printf(Line3运算符实例,c的值d,c); ca; printf(Line4运算符实例,c的值d,c); ca; printf(Line5运算符实例,c的值d,c); c200; ca; printf(Line6运算符实例,c的值d,c); c2; printf(Line7运算符实例,c的值d,c); c2; printf(Line8运算符实例,c的值d,c); c2; printf(Line9运算符实例,c的值d,c); c2; printf(Line10运算符实例,c的值d,c); c2; printf(Line11运算符实例,c的值d,c); } 当上面的代码被编译和执行时,它会产生下列结果: Line1运算符实例,c的值21 Line2运算符实例,c的值42 Line3运算符实例,c的值21 Line4运算符实例,c的值441 Line5运算符实例,c的值21 Line6运算符实例,c的值11 Line7运算符实例,c的值44 Line8运算符实例,c的值11 Line9运算符实例,c的值2 Line10运算符实例,c的值0 Line11运算符实例,c的值2 六、杂项运算符sizeof三元 下表列出了C语言支持的其他一些重要的运算符,包括sizeof和?:。 实例 请看下面的实例,了解C语言中所有可用的杂项运算符: 实例 includestdio。h intmain() { inta4; shortb; doublec; intptr; sizeof运算符实例 printf(Line1变量a的大小lu,sizeof(a)); printf(Line2变量b的大小lu,sizeof(b)); printf(Line3变量c的大小lu,sizeof(c)); 和运算符实例 ptra;ptr现在包含a的地址 printf(a的值是d,a); printf(ptr是d,ptr); 三元运算符实例 a10; b(a1)?20:30; printf(b的值是d,b); b(a10)?20:30; printf(b的值是d,b); } 当上面的代码被编译和执行时,它会产生下列结果: Line1变量a的大小4 Line2变量b的大小2 Line3变量c的大小8 a的值是4 ptr是4 b的值是30 b的值是20 七、C中的运算符优先级 运算符的优先级确定表达式中项的组合。这会影响到一个表达式如何计算。某些运算符比其他运算符有更高的优先级,例如,乘除运算符具有比加减运算符更高的优先级。 例如x732,在这里,x被赋值为13,而不是20,因为运算符具有比更高的优先级,所以首先计算乘法32,然后再加上7。 下表将按运算符优先级从高到低列出各个运算符,具有较高优先级的运算符出现在表格的上面,具有较低优先级的运算符出现在表格的下面。在表达式中,较高优先级的运算符会优先被计算。 实例 请看下面的实例,了解C语言中运算符的优先级: 实例 includestdio。h main() { inta20; intb10; intc15; intd5; inte; e(ab)cd;(3015)5 printf((ab)cd的值是d,e); e((ab)c)d;(3015)5 printf(((ab)c)d的值是d,e); e(ab)(cd);(30)(155) printf((ab)(cd)的值是d,e); ea(bc)d;20(1505) printf(a(bc)d的值是d,e); return0; } 当上面的代码被编译和执行时,它会产生下列结果: (ab)cd的值是90 ((ab)c)d的值是90 (ab)(cd)的值是90 a(bc)d的值是50