当两个表达式都被打印时,都会给出不同的输出。 当第一个程序执行时,我得到从 1 到 10 的数字,当执行第二个代码时,我只得到 11 作为输出。 为什么会出现这种情况?添加分号如何改变代码的输出?
//program 1
#include<stdio.h>
int main()
{
int i;
for(i=1;i<=10;i++)
{
printf("%d",i);
}
}
//program 2
#include<stdio.h>
int main()
{
int i;
for(i=1;i<=10;i++);
{
printf("%d",i);
}
}
分号表示操作结束。所以,当你有
for(i=1;i<=10;i++);
基本上你说让我们在
i
的帮助下循环,最初是1,最后是10,每次步进1,不做任何其他事情。当你说:
for(i=1;i<=10;i++) { /* ... */ }
基本上你说让我们在
i
的帮助下循环,最初是1,最后是10,每次步进1,执行块内的代码(无论它是什么)。所以,你的
for(i=1;i<=10;i++);
{
printf("%d",i);
}
在
i
的帮助下循环,从 1 变为 10,每一步递增,并且在任何步骤中不执行任何操作。循环结束后,printf
会被执行并打印11,因为i
在循环过程中增加了1,2,3,4,5,6,7,8,9,10,11,直到的条件i <= 10
变为 false,i
变为 11,当您的代码到达执行循环后的代码时,它会打印 i
,此时为 11。相比之下:
for(i=1;i<=10;i++)
{
printf("%d",i);
}
是一个循环,其中
i
将获取 1、2、3、4、5、6、7、8、9、10 的值,并为每个值执行 printf
。然后,i
像往常一样递增,变成11,因此循环条件不再为真,循环将不再执行附加的代码块。