与x27之间的差异;或';c语言中的逻辑
在linux中使用gcc编写这样的循环时与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
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;
?;-)在这两种情况下,它都运行无限循环…它完美地工作。