#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。我错过了什么吗?
答案 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]
的值。因此x
和y = 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。