与x27之间的差异;或';c语言中的逻辑

与x27之间的差异;或';c语言中的逻辑,c,gcc,logical-operators,C,Gcc,Logical Operators,在linux中使用gcc编写这样的循环时 while(1 | | 0) 它进入循环,但当我这样写循环时 while(0 | | 1) 它没有进入循环。有什么区别吗?没有任何区别。执行应该在这两个表达式中进入循环。或者您可能键入如下内容 while(0||1); 如果你把它放进去,它不会帮助你;在while循环之后,这里没有区别。在这种情况下。你又做错了什么 但实际上有区别——在C/C++中,有。因此,由于这不是您真正的代码,这可能会对您有所帮助 例如,如果你有 while( f() || g

在linux中使用gcc编写这样的循环时

while(1 | | 0)

它进入循环,但当我这样写循环时

while(0 | | 1)


它没有进入循环。有什么区别吗?

没有任何区别。执行应该在这两个表达式中进入循环。

或者您可能键入如下内容

while(0||1);

如果你把它放进去,它不会帮助你;在while循环之后,这里没有区别。在这种情况下。你又做错了什么


但实际上有区别——在C/C++中,有。因此,由于这不是您真正的代码,这可能会对您有所帮助

例如,如果你有

while( f() || g() )
// ..
如果
f()
返回
true
g()
将永远不会执行,因为表达式将立即计算为
true
。与
&
相同:

while( f() && g() )
// ..
如果
f()
返回
false
g()
将永远不会执行,因为表达式的值肯定是
false
(与
g()
在此处返回的内容无关)


好的,如果
f()
返回
true
(对于最后一个示例),
g()
将被执行,以计算表达式的值。与
|
相同,但是如果
f()
返回
false
在这两种情况下,它都运行无限循环…它完美地工作。。。 他们之间没有差别

我想你是在第二个while循环的末尾。。
因此,请删除该项并查看

这两个代码段具有相同的行为。在这两种情况下,条件都为true,并将返回无限循环行为。

没有区别,执行应进入循环体。您是否可以共享更多代码和/或使用的编译器版本?在这两种情况下,它都应运行无限循环…第二个循环应进入任何st标准C编译器。向我们展示在第二种情况下如何确定循环未被输入的代码。您是否忘记了在第一个循环中
break;
?;-)在这两种情况下,它都运行无限循环…它完美地工作。