为什么这个程序以它的方式运行?

时间:2015-02-18 05:59:13

标签: c arrays addition

#include<stdio.h>
int main()
{
    int a[5] = {5, 1, 15, 20, 25};
    int x, y, z;
    x = ++a[1];
    y = a[1]++;
    z = a[x++];
    printf("%d, %d, %d", x, y, z);
    return 0;
 }

&#34; X&#34;打印为3,但我原以为它会返回2?事实上,如果我删除&#34; ++&#34;并设置x等于a [1],它返回2.它将实际存在的任何值加1。我错过了什么吗?

4 个答案:

答案 0 :(得分:4)

  

“x”打印为3,但我原以为它会返回2?

 x = ++a[1]; 

由于预增量,这里x = 2

你有

z = a[x++];

x ++ = x + 1 = 2+1 = 3

因此x=3

答案 1 :(得分:0)

x = ++a[1];//Increment a[1] and then assign it to x
y = a[1]++;//assign a[1] to y and then increment a[1]
z = a[x++];//assign a[2] to z and then increment x

答案 2 :(得分:0)

++称为增量运算符。它将值增加1。 在你的代码中你有

x = ++a[1];
变量之前的

++预增量运算符。在将a[1]分配给x之前,它会增加a[1]的值。因此xy = a[1]++; 的值变为3。

另一个

++
变量之后的

a[1]后增量运算符。它将y(已经变为3)分配给a[1],然后将{{1}}的值增加到4。

此链接可以帮助您

http://www.c4learn.com/c-programming/c-increment-operator/#A_Pre_Increment_Operator

答案 3 :(得分:0)

x=++a[1]; //  Now x got the value 2. 

在这一行中,

z = a[x++]; // x++ will be happen after the assigning of a[2] to z. So the value of x is incremented. So the x value is became 3. 

它是后增量,因此z得到的值为15.请参阅此link