关于c:有意思的C语言运算符

30次阅读

共计 2248 个字符,预计需要花费 6 分钟才能阅读完成。

在 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 后再赋值给 j

j -= 2; // 等同于 j = j - 2,示意 j 的值减 2 后再赋值给 j

j *= 2; // 等同于 j = j * 2,示意 j 的值乘以 2 后再赋值给 j

j /= 2; // 等同于 j = j / 2,示意 j 的值除以 2 后再赋值给 j

j %= 2; // 等同于 j = j % 2,示意 j 的值除以 2 后再赋值给 j

1、3 复合位运算赋值运算符有 5 个,参加运算的量,按二进制位进行运算,别离是“&=”,“|=”,“^=”,“>>=”,“<<=”,它们的用法可用如下例子示意:

int y = 2; // 相应的二进制数为 0b10

int num = 1; // 相应的二进制数为 0b01

y &= num; // 等同于 y = y & num,此时 int 类型 y 的值为 0,二进制 y 的值为 0b0

y |= num; // 等同于 y = y | num,此时 int 类型 y 的值为 3,二进制 y 的值为 0b11

y ^= num; // 等同于 y = y ^ num,此时 int 类型 y 的值为 3,二进制 y 的值为 0b11

y >>= num; // 等同于 y = y >> num,示意 y 向右移 num 位再赋值给 y,此时 int 类型 y 的值为 1,二进制 y 的值为 0b01

y <<= 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 = 1

j2 = (0) || (k = 2); //(0) 为假,(k = 2) 中 k 等于 2,视为真;所以 j2 就为真,j2 = 1

j3 = !k; // k 的值为 2,视为真,!k 就为假,所以 j3 为假,j3 的值为 0

用代码做例子后,咱们进行一下总结,“&&”逻辑运算符左右两边的表达式都为真时,那么整个表达式就为真,否则为假;如果“&&”逻辑运算符右边的表达式为假时,左边的表达式就不会执行。“||”逻辑运算符左右两边的表达式至多有一个为真时,整个表达式就为真,否则为假;如果“||”逻辑运算符右边的表达式为真时,左边的表达式不会执行。

3、关系运算符

关系运算符有 6 个,别离是“>”、“<”、“=”、“>=”、“<=”、“!=”,它们个别用于 2 个或者 2 个以上数据作比拟;它们的用法可用如下例子所示:

int a,b,c,d,e,f;

a = 3 > 4; // 3 不大于 4,所以 a 为 0
b = 4 < 5; // 4 小于 5,所以 b 为 1
c = 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 类型。

本篇文章就写到这里就完结了,因为自己技术水平无限,文章中难免会有出错,欢送批评指正,谢谢大家的浏览。

正文完
 0