对于代码,
while(1)
{
/* ..... */
}
MSVC 生成以下警告。
warning C4127: conditional expression is constant
MSDN警告页面建议使用for(;;)
代替while(1)
。我想知道有什么好处for(;;)
正在给出以及为什么它会警告不断使用while
?
我应该在 GCC 上使用什么标志才能得到相同的警告?
恒定的条件通常只是错误。考虑一下:
unsigned k;
...
while (k>=0)
{
...
}
条件k>=0
如果 k 是有符号整数,则有意义,但对于无符号整数则不然。粗心的开发人员忘记 k 被声明为无符号,并且他/她会使用它,就好像它可以用作负数一样。编译器会尽力提供帮助并警告您这一点,并且while(1)
编译器陷入同一问题类别。for(;;)
更可取,因为它明确意味着“永远循环”
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)