C语言中逻辑运算符的一个非常简单的问题
我有一个关于C语言的问题。C语言中有逻辑运算符,如C语言中逻辑运算符的一个非常简单的问题,c,logical-operators,C,Logical Operators,我有一个关于C语言的问题。C语言中有逻辑运算符,如&和|。 我在代码中使用了它: #include <stdio.h> int main() { printf("%d",(1>2)||(2==2); printf("%d",(1>2)|(2==2); } #包括 int main() { printf(“%d”,(1>2)| |(2==2); printf(“%d”,(1>2)|(2==2); } 我知道为什么打印值是1,但我不知道为什么编译器没有出错
&
和|
。
我在代码中使用了它:
#include <stdio.h>
int main()
{
printf("%d",(1>2)||(2==2);
printf("%d",(1>2)|(2==2);
}
#包括
int main()
{
printf(“%d”,(1>2)| |(2==2);
printf(“%d”,(1>2)|(2==2);
}
我知道为什么打印值是1,但我不知道为什么编译器没有出错
逻辑运算符的数目是一个或两个,这没有问题吗?
(例如:| |,|获得相同的值)
关于打印函数中使用的逻辑运算符的数量有什么规定吗?您没有指定编译器引发的错误,但每个
printf
命令都缺少一个括号:
#include <stdio.h>
int main()
{
printf("%d",(1>2)||(2==2));
printf("%d",(1>2)|(2==2));
}
#包括
int main()
{
printf(“%d”,(1>2)| |(2==2));
printf(“%d”,(1>2)|(2==2));
}
在C中,x | y
对x
的每一位执行一个单独的逻辑“或”操作,并使用y
的对应位,而x | y
执行一个逻辑“或”操作对整个值的操作:如果两个值都为零,则结果为零;如果x
或y
非零,则结果为一
例如,如果x
的位为0110 0111,y
的位为0011 0001,则x | y
的位为0111 0111,x | | y
的位为1
在代码中,1>2
生成值0,2==2
生成值1。对于这些值,0 | 1
生成1(因为位是00…00或00…01,00…01生成00…01,这是1),0 | 1
生成1(因为其中一个操作数是非零的,所以0 | 1
生成1)
这与它们是否用于
printf
调用或其他地方无关。欢迎这样做。我假设你不知道你得到的输出是什么。你弄乱了逻辑运算符和按位运算符。你可以重温你最喜欢的C教程或教科书,查找这些基础知识。&
和
都是按位运算符与逻辑运算符&&
和| |
完全不同。此外,您发布的代码中的括号是不平衡的,这就是它无法编译的原因,因此您可能没有使用您发布的代码。