为什么在这个循环中n的初始值为1?

时间:2013-11-13 00:25:03

标签: c

来自Kochan的“C编程”:

输入:

printf ("TABLE OF TRIANGULAR NUMBERS\n\n"); 
printf (" n Sum from 1 to n\n");
printf ("--- ---------------\n");
triangularNumber = 0;
for(n=1; n<=10; ++n){ 
    triangularNumber += n;
    printf (" %i", n);
}

输出(仅部分粘贴):

三角数表

n = 1

从1到n = 1的总和

n = 2

从1到n = 2的总和

问题

我理解这个的目的,但这里是我无法理解的:如果在循环内我们将初始值“1”分配给“n”,那么我们检查n&lt; = 10,并且如果那是真的(它应该是初始值),那么我们将n加“1”。不应该(我知道它不应该,只是不明白为什么)我们表中显示的初始值是n = 2?

提前感谢您的耐心和努力!

1 个答案:

答案 0 :(得分:4)

++n在循环体运行之后发生,而不是之前。

for(n=1; n<=10; ++n){ 
   triangularNumber += n;
   printf (" %i", n);
}

相当于:

n=1; // happen before the loop
while(n<=10){ // becomes the conditional test
   triangularNumber += n;
   printf (" %i", n);
   ++n; // happens at the end of the list
}