【发布时间】:2014-01-20 09:42:06
【问题描述】:
在这个for循环语句中
#include<stdio.h>
int main()
{
static int i;
for(++i;++i;++i) {
printf("%d ",i);
if(i==4)
break;
}
return 0;
}
变量i最初为0。第一轮for循环中的参数是
1st ++i: i = 0 + 1 = 1
2nd ++我: i=1+1=2
所以,在第一个循环中,我有这个 for(i=1; i<2; ++i); 或 for(i=1; i<=2; ++i);?
编辑 我在测试中在线找到了这个例子关于 C。我运行它(在 for-loop 内,我有一个断点,所以在一些循环之后它会中断)但我只是在猜测它的行为,所以我在这里问它以确定。我现在正在学习 C,所以对我来说存在愚蠢的问题。问比不问好。
【问题讨论】:
-
您的代码中既没有
<也没有<=,那么您为什么希望它的行为与这两者一样呢? -
@nhahtdh:在某些时候,
i会溢出,++i会变成0,循环会中断 -
为什么要用这种可怕的代码折磨自己?
-
你为什么不运行它并用你的发现启发我们?
-
你什么都没有:你拥有的是(隐含的)
++i != 0。由于您的i正在递增,因此当它递增超过INT_MAX时会遇到未定义的行为。