循环内变量的递增

时间:2018-10-01 17:07:56

标签: c

程序的输出是什么?

#include<stdio.h>
void main()
{
   int i = 0;
   while(i < 10)
    {
      i++;
      printf("%d\n",i);
    }
}

输出是从0开始还是从1开始,正如我的教授教我的那样,与使用++ i一样,使用i ++时变量的值仅在循环结束时才增加?

3 个答案:

答案 0 :(得分:2)

在语句++完成之前,使用前缀++或后缀i++;进行递增的副作用。语句处于循环状态不会改变这一点。

您的教授是正确的。第一次在循环中调用printf时,i的值将为1,因为前一条语句使该值递增。

相反,您有以下代码:

while(i < 10)
{
  printf("%d\n",i++);
}

然后在第一次迭代中将打印0 。在这种情况下,i的值会增加,但是后缀++运算符意味着i的旧值会传递给printf调用。

答案 1 :(得分:1)

将从1开始,因为i ++行在您输入要打印的下一行之前结束,因此在同一行/命令中执行其他操作时增加它的++ i与i ++是不同的。 例如:如果您使用

printf("%d",i++);

它会在递增i之前打印0,但是如果您这样输入:

printf("%d",++i);

它将首先将i递增(从0到1),然后打印i(第一次打印时为1)。

答案 2 :(得分:0)

您的代码将打印1作为第一个值。

i++语句末尾增加值,反之亦然++i在语句前增加值。通常在分配变量时使用:

i = 5;
int a = ++i; // a=6, i=6
i = 5;
int b = i++; // b=5, i=6