ran*_*nee 0 c printf curly-braces
我这里有一些代码:
int n = 0;
for(n = 1;n<4;n++)
printf("%d",n);
return 0;
Run Code Online (Sandbox Code Playgroud)
为什么它返回“123”而不是“3”?
我尝试用谷歌搜索这个问题,但找不到任何有用的东西。
问完我的问题后,我想我明白你的意思了。
你有什么
int n = 0;
for(n = 1;n<4;n++)
printf("%d",n);
return 0;
Run Code Online (Sandbox Code Playgroud)
功能上与
int n = 0;
for(n = 1;n<4;n++)
{
printf("%d",n);
}
return 0;
Run Code Online (Sandbox Code Playgroud)
由于 for 循环需要一条语句,要么是用大括号括起来的语句块,要么是像示例中那样以分号结尾的单个语句。如果您希望它只打印 3 并且出于某种原因想要使用循环来递增数字,那么您需要为其提供一个空语句,如下所示:
int n = 0;
for(n = 1;n<3;n++);
printf("%d",n);
return 0;
Run Code Online (Sandbox Code Playgroud)
或者
int n = 0;
for(n = 1;n<3;n++){}
printf("%d",n);
return 0;
Run Code Online (Sandbox Code Playgroud)
两者都只会打印 3。
请注意,因为变量n会递增,然后使用原始边界进行检查n < 4,所以循环将在何时结束n = 4,因此4将被打印。我在最后两个例子中改变了这一点。另请注意术语“返回”的错误使用,正如一些评论指出的那样。