英文:
Why is this code printing "123" instead just 3?
问题
这段代码返回 '123' 而不是 '3' 的原因是因为在循环中,它使用了一个 for
循环来打印从 1 到 3 的数字。这导致在循环的每次迭代中,数字 1、2 和 3 都被打印出来,最终形成 '123'。
对于你的疑问,尝试通过谷歌搜索找到有用信息是一个好方法,但在这种情况下,这个问题相对基础,可能没有很多相关的结果。如果你想让循环仅打印 '3',你可以修改代码以适应你的需求。
英文:
I've got some code here:
int n = 0;
for(n = 1;n<4;n++)
printf("%d",n);
return 0;
Why does it return '123' instead of just '3'?
I tried to Google for this issue, but I couldn't find anything useful.
答案1
得分: 5
以下是翻译好的部分:
"After asking my question, I think I see what you are getting at."
"你在提问后,我想我明白你的意思了。"
"What you have with is functionally the same as"
"你所拥有的与功能上相同"
"Since the for loop expects a statement, either a block of statements enclosed in braces, or a single one terminated with a semicolon as you have in your example."
"因为for循环期望一个语句,可以是由大括号括起来的一组语句,也可以是以分号结尾的单个语句,就像你在示例中所做的那样。"
"If you wanted it to just print 3 and for whatever reason wanted to use a loop just to increment a number, you would want to provide it with an empty statement as such:"
"如果你只想要打印3,而出于某种原因想要使用循环来递增一个数字,你可以提供一个空语句,就像这样:"
"Both of which will only print 3."
"这两种方式都只会打印3。"
"Please note that because the variable n
gets incremented and then checked, using your original bounds n < 4
, the loop would end when n = 4
and thus 4
would be printed. I changed this in my last two examples."
"请注意,由于变量n
被递增然后被检查,使用你的原始界限n < 4
,循环将在n = 4
时结束,因此会打印出4
。我在我的最后两个示例中做了更改。"
"Also note the incorrect use of the term return, as some comments pointed out."
"还要注意,正如一些评论指出的那样,术语return的使用是不正确的。"
英文:
After asking my question, I think I see what you are getting at.
What you have with
int n = 0;
for(n = 1;n<4;n++)
printf("%d",n);
return 0;
is functionally the same as
int n = 0;
for(n = 1;n<4;n++)
{
printf("%d",n);
}
return 0;
Since the for loop expects a statement, either a block of statements enclosed in braces, or a single one terminated with a semicolon as you have in your example. If you wanted it to just print 3 and for whatever reason wanted to use a loop just in increment a number, you would want to provide it with an empty statement as such:
int n = 0;
for(n = 1;n<3;n++);
printf("%d",n);
return 0;
or
int n = 0;
for(n = 1;n<3;n++){}
printf("%d",n);
return 0;
Both of which will only print 3.
Please note that because the variable n
gets incremented and then checked, using your original bounds n < 4
, the loop would end when n = 4
and thus 4
would be printed. I changed this in my last two examples. Also note the incorrect use of the term return, as some comments pointed out.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论