6.8.5.6
An iteration statement whose controlling expression is not a constant expression,
that performs no input/output operations, does not access volatile objects, and
performs no synchronization or atomic operations in its body, controlling
expression, or (in the case of a for statement) its expression-3, may be assumed
by the implementation to terminate.
如果满足上述条件,编译器就可以终止循环。真的吗? 如果是的话,我试图模拟这种情况,但没有成功。 我试过了,
int main()
{
// Some statements...
{
int a = 0;
int b = 100;
int i=0;
while(++i>=0)
{
a = b;
}
}
// Some statements...
return 0;
}
任何人都可以帮我模拟这种情况。
谢谢,
答案 0 :(得分:0)
好吧,编译器可以在那里做任何事情。整数溢出是未定义的行为。如果你写了while (i==0)
,则适用6.8.5.6。
答案 1 :(得分:0)
尝试使用编译器优化级别,例如 -O2,-O3 。它可以帮助你:))
注意:
对于GCC系列编译器,请尝试 -O2或-O3
对于MSVC,请尝试 / O2或/ O3