C语言中竖线符号|与双竖线||的用法有何不同?
- 内容介绍
- 文章标签
- 相关推荐
本文共计479个文字,预计阅读时间需要2分钟。
在C++语言中,`||`是逻辑或运算符,其操作数是布尔型,即只有0(表示false)和1(表示true)两个值。C++规定,在逻辑运算中,任何非零值都被视为1,即true。因此,`|`称为位或运算符,它对两个数的每一位进行或运算。
而“|”是位操作符(或),其操作数是位序列。位序列可以是字符型、整型与长短整型等(通常情况下选择无符号整型)。在位运算中,相应的位之间进行逻辑运算,因此,从逻辑上讲,位运算过程包含多个逻辑运算过程。
下面通过一个示例来了解两者之间的区别。
#include <stdio.h>
int main (void)
{
unsigned int x = 0x1101;
unsigned int y = 0x1100;
/*逻辑操作*/
printf("sizeof(x || y): %d\n", sizeof(x || y));
if(x||y)
{
printf("x || y : %d(True) \n", x||y);
}
else
{
printf("x || y : %d(False) \n", x||y);
}
/*位操作*/
printf("sizeof(x | y): %d\n", sizeof(x | y));
printf("x | y : %x \n", x|y);
return 0;
}
因为变量 x 与变量 y 都不为 0,所以执行语句 if(x||y) 返回 1。而当执行 x|y(即 1101|1100)时,相应的位之间逐一地进行逻辑运算(或),因此所得到的结果为 1101。
程序运行结果为:
sizeof(x || y): 4
x || y : 1(True)
sizeof(x | y): 4
x | y : 1101
本文共计479个文字,预计阅读时间需要2分钟。
在C++语言中,`||`是逻辑或运算符,其操作数是布尔型,即只有0(表示false)和1(表示true)两个值。C++规定,在逻辑运算中,任何非零值都被视为1,即true。因此,`|`称为位或运算符,它对两个数的每一位进行或运算。
而“|”是位操作符(或),其操作数是位序列。位序列可以是字符型、整型与长短整型等(通常情况下选择无符号整型)。在位运算中,相应的位之间进行逻辑运算,因此,从逻辑上讲,位运算过程包含多个逻辑运算过程。
下面通过一个示例来了解两者之间的区别。
#include <stdio.h>
int main (void)
{
unsigned int x = 0x1101;
unsigned int y = 0x1100;
/*逻辑操作*/
printf("sizeof(x || y): %d\n", sizeof(x || y));
if(x||y)
{
printf("x || y : %d(True) \n", x||y);
}
else
{
printf("x || y : %d(False) \n", x||y);
}
/*位操作*/
printf("sizeof(x | y): %d\n", sizeof(x | y));
printf("x | y : %x \n", x|y);
return 0;
}
因为变量 x 与变量 y 都不为 0,所以执行语句 if(x||y) 返回 1。而当执行 x|y(即 1101|1100)时,相应的位之间逐一地进行逻辑运算(或),因此所得到的结果为 1101。
程序运行结果为:
sizeof(x || y): 4
x || y : 1(True)
sizeof(x | y): 4
x | y : 1101

