for循环结尾处的分号假设清空正文并创建一个空循环。但为什么这是打印6
?
void main()
{
int i;
for(i=1;i<=5;i++);
{
printf("%d\n",i);
}
}
答案 0 :(得分:11)
循环体为空,否则会打印1
,2
,3
,4
,5
。但是循环头仍在运行,并且在每次迭代中它增加i
。当它达到6
而不是<=5
时,循环结束。循环后打印i
将i
打印为6
。递增i
是循环的副作用。
答案 1 :(得分:1)
在循环结束时i
将为6,printf
执行此操作。
答案 2 :(得分:1)
for循环for(i=1;i<=5;i++);
将正好运行5次,将i从1递增到6(即使for循环体是无操作)。因此,在这里:
{
printf("%d\n",i);
}
程序将打印i
的当前值,即6。
答案 3 :(得分:1)
试试这个很有趣
#include <stdio.h>
int main(void)
{
int i;
for (i = 1; i <= 5; i++) /* void */;
/* floating block one */
{
int i = 42; /* new i, hides old i */
printf("%d\n",i);
}
/* floating block two */
{
printf("%d\n",i);
}
}
答案 4 :(得分:1)
因为你在null循环之外声明了int,所以该值保存在increment循环之外。
额外的括号在这里没有做任何事情,因为分号退出循环。
答案 5 :(得分:1)
很简单:
for(i=1;i<=5;i++);
将执行5次,从1到5
然后i = 6结束for循环,然后执行一个新的“scoped”语句:
printf("%d\n",i);
因此打印6