在C语言中,运算符用于执行程序代码运算,会针对两个或者两个以上操作数进行运算。比方:5 - 2,它的操作数是 5 和 2,而运算符则是 “-”。常见的运算符可大抵分为 4 种类型:算术运算符、关系运算符、赋值运算符和逻辑运算符;它优先级从低到高的程序为: 赋值运算符 < 逻辑运算符 < 关系运算符 < 算术运算符;上面对这4种类型一一解说。
1、赋值运算符
赋值运算符可分为简略赋值、复合算术赋值和复合位运算赋值。
1、1 简略运算符只有一个 “=”,它的用法可用如下例子示意:
int n = 2;
1、2 复合算术赋值运算符有 5 个,别离为 “+=”, “-=”, “*=”, “/=”, “%=”,它们的用法可用如下例子示意:
int j = 1;j += 2; //等同于 j = j + 2,示意j的值加 2 后再赋值给jj -= 2; //等同于 j = j - 2,示意j的值减 2 后再赋值给jj *= 2; //等同于 j = j * 2,示意j的值乘以 2 后再赋值给jj /= 2; //等同于 j = j / 2,示意j的值除以 2 后再赋值给jj %= 2; //等同于 j = j % 2,示意j的值除以 2 后再赋值给j
1、3 复合位运算赋值运算符有 5 个,参加运算的量,按二进制位进行运算,别离是 “&=”, “|=”, “^=”, “>>=”, “<<=”,它们的用法可用如下例子示意:
int y = 2; //相应的二进制数为0b10int num = 1; //相应的二进制数为0b01y &= num; //等同于 y = y & num,此时int类型y的值为0,二进制y的值为0b0y |= num; //等同于 y = y | num,此时int类型y的值为3,二进制y的值为0b11y ^= num; //等同于 y = y ^ num,此时int类型y的值为3,二进制y的值为0b11y >>= num; //等同于 y = y >> num,示意y向右移num位再赋值给y,此时int类型y的值为1,二进制y的值为0b01y <<= num; //等同于 y = y << num,示意y向左移num位再赋值给y,此时int类型y的值为2,二进制y的值为0b10
2、逻辑运算符
逻辑运算符有 3 个,它们别离是 “&&”、“||” 和 “!”,“!” 示意非,取反的意思;在这里拓展一个知识点,在 C 语言中,用表达式等于0示意布尔值的假(0),用不等于0的表达式示意布尔值的真(1);逻辑运算符的用法可用如下例子所示:
int j,j2,j3 ;int k = 20;j = (3 - 4) && (k = 2); //(3 - 4)等于-1,视为真;(k = 2)中k等于2,视为真,所以j为真,j = 1j2 = (0) || (k = 2); //(0)为假,(k = 2)中k等于2,视为真;所以j2就为真,j2 = 1j3 = !k; //k的值为2,视为真,!k就为假,所以j3为假,j3的值为0
用代码做例子后,咱们进行一下总结,“&&” 逻辑运算符左右两边的表达式都为真时,那么整个表达式就为真,否则为假;如果 “&&” 逻辑运算符右边的表达式为假时,左边的表达式就不会执行。“||” 逻辑运算符左右两边的表达式至多有一个为真时,整个表达式就为真,否则为假;如果 “||” 逻辑运算符右边的表达式为真时,左边的表达式不会执行。
3、关系运算符
关系运算符有 6 个,别离是 “>”、“<”、“=”、 “>=”、“<=”、“!=”,它们个别用于 2 个或者 2 个以上数据作比拟;它们的用法可用如下例子所示:
int a,b,c,d,e,f;a = 3 > 4; //3不大于4,所以a为0b = 4 < 5; //4小于5,所以b为1c = 4 == 4;d = 5 >= 3;e = 7 != 8;f = 10 <= 12;
4、算术运算符
算术运算符有 7 个,它们别离是 “+” 、“-” 、“” 、“/”、 “%” 、“++” 和 “--”,因为 “+” 和 “-” 都比较简单,所以只对 “” 、“/”、 “%” 、“++” 和 “--” 进行解说;举例之前先拓展一个知识点,C语言的根本数据类型的优先级为 byte,short,char—> int —> long—> float —> double,byte、short 和 char 这 3 个为同一级别;"*" 示意乘法运算符,“/” 为除法运算符,“%” 为求余数运算符,“++” 为自增运算符,“--”为自减运算符,它们的用法可用如下例子示意:
int num = 3 * 4; int num2 = 16 / 5; //num2 为3 16 / 5.0 ; //此表达式的值为 3.20000 16.0 / 5 ; //此表达式的值为 3.20000 -13 / 4 ; //此表达式的值为 -4 4 * 8.0 ; //此表达式的值为 32.0000 13 % -3 ; //此表达式的值为 1 -13 % 3 ; //此表达式的值为 -1 num2++ ; //等同于 num2 = num2 + 1 num2-- ; //等同于 num2 = num2 - 1
依据以上算术运算符的例子,可总结一些论断:
(1)除法的运算后果和运算对象的数据类型有关系,被除数和除数只有有一个优先级较高的数,则商的数据类型就是优先级较高的类型,比方 16.0 / 5, 16.0 为double类型,5 为int类型,double 的类型较高,所以它们的商为double类型。
(2)取余的运算对象必须是整数,后果是整除后的余数,余数的符号与被除数符号雷同,比方 13 % -3, 13 是被除数也是负数,所以余数也是负数。
(3)乘法的运算后果和运算对象的数据类型有关系,乘积表达式只有有一个数的类型优先级较高,那么它的积的类型和乘数优先级最高的类型雷同,比方 4 * 8.0, 4是 int 类型,8 是 double 类型,double 类型比拟高,所以积为 double 类型。
本篇文章就写到这里就完结了,因为自己技术水平无限,文章中难免会有出错,欢送批评指正,谢谢大家的浏览。