当我们使用C语言编写程序时,我们经常需要使用运算符来进行条件判断、逻辑运算等操作。C语言提供了许多运算符,其中包括位运算符和逻辑运算符。这里介绍C的|、||、&、&&、异或、~、!运算符的详细攻略。
位运算符
按位或运算符(|)
按位或运算符用符号“|”表示,它将两个操作数的每一个对应的位进行“或”运算。
例如,下面的代码将输出13:
int a = 5;
int b = 9;
int c = a | b;
printf("%d", c); // 输出 13
以上代码中,a 和 b 对应的二进制形式是:
a = 0b 0 0 0 0 0 1 0 1
b = 0b 0 0 0 0 1 0 0 1
按位或运算后得到的二进制数为 0b00001101,也就是十进制数 13。
按位与运算符(&)
按位与运算符用符号“&”表示,它将两个操作数的每一个对应的位进行“与”运算。
例如,下面的代码将输出1:
int a = 5;
int b = 9;
int c = a & b;
printf("%d", c); // 输出 1
以上代码中,a 和 b 对应的二进制形式是:
a = 0b 0 0 0 0 0 1 0 1
b = 0b 0 0 0 0 1 0 0 1
按位与运算后得到的二进制数为 0b00000001,也就是十进制数 1。
异或运算符(^)
异或运算符用符号“^”表示,它将两个操作数的每一个对应的位进行异或运算。
例如,下面的代码将输出12:
int a = 5;
int b = 9;
int c = a ^ b;
printf("%d", c); // 输出 12
以上代码中,a 和 b 对应的二进制形式是:
a = 0b 0 0 0 0 0 1 0 1
b = 0b 0 0 0 0 1 0 0 1
异或运算后得到的二进制数为 0b00001100,也就是十进制数 12。
取反运算符(~)
取反运算符用符号“~”表示,它将操作数的每一个二进制位进行取反运算。
例如,下面的代码将输出 -6:
int a = 5;
int b = ~a;
printf("%d", b); // 输出 -6
以上代码中,a 的二进制形式是:
a = 0b 0 0 0 0 0 1 0 1
取反运算后得到的二进制数为 0b11111010,也就是十进制数 -6。
逻辑运算符
逻辑或运算符(||)
逻辑或运算符用符号“||”表示,它用于判断两个表达式中是否有一个表达式为真(非零)。
例如,下面的代码将输出“message”:
int a = 5;
int b = 0;
if (a || b) {
printf("message");
} else {
printf("null");
}
以上代码中,a 的值为 5,b 的值为 0。因为 a 的值非零,所以 a || b 的结果为真(非零)。
逻辑与运算符(&&)
逻辑与运算符用符号“&&”表示,它用于判断两个表达式中是否都为真(非零)。
例如,下面的代码将输出“null”:
int a = 5;
int b = 0;
if (a && b) {
printf("message");
} else {
printf("null");
}
以上代码中,a 的值为 5,b 的值为 0。因为 b 的值为 0,所以 a && b 的结果为假(零)。
逻辑非运算符(!)
逻辑非运算符用符号“!”表示,它用于对一个表达式的值进行取反。
例如,下面的代码将输出“null”:
int a = 5;
if (!a) {
printf("message");
} else {
printf("null");
}
以上代码中,a 的值为 5。因为 5 是非零值,所以 !a 的结果为假(零)。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C的|、||、&、&&、异或、~、!运算符 - Python技术站