c中'或'逻辑之间的差异

时间:2011-08-09 10:35:23

标签: c gcc logical-operators

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

while(1 || 0)

它进入循环但是当我像这样编写循环时

while(0 || 1)

它不会进入循环。差异是什么?

5 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

或者您可能正在键入

while(0||1);

如果你放了,不会帮助你;在while循环之后

答案 2 :(得分:0)

这里没有区别。在这种情况下。你做错了什么。


但实际上存在差异 - 在C / C ++中,有Short-circuit evaluation。所以,因为这不是你真正的代码,这可以帮助你。

例如,如果你有

while( f() || g() )
// ..

如果f()返回true,则永远不会执行g(),因为表达式将立即评估为true&&

也是如此
while( f() && g() )
// ..

如果f()返回false,则永远不会执行g(),因为表达式的值肯定是false(与g()无关将回到这里。

好吧,如果f()返回true(对于最后一个示例),将执行g() 来计算表达式的值。与||相同,但如果f()返回false

答案 3 :(得分:0)

在这两种情况下它都会运行无限循环...它完美地工作...... 它们之间没有区别......

我认为你是在放;在第二个while循环结束时.. 所以删除它,看看

答案 4 :(得分:0)

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