以下代码的输出为:3 2 15
我期待着2 2 15
为什么会这样?
#include <stdio.h>
int main() {
int a[5] = { 5, 1, 15, 20, 25 };
i = ++a[1];
j = a[1]++;
m = a[i++];
printf("%d %d %d", i, j, m);
return 0;
}
答案 0 :(得分:2)
递增/递减运算符实际上会更改对象的值,而不仅仅是返回结果值。在m=a[i++];
行中,您将再次增加i
。
答案 1 :(得分:1)
因为您将其增加了两次:
i=++a[1]; // i = 2
j=a[1]++;
m=a[i++]; // i = 3
printf("%d %d %d",i,j,m);
答案 2 :(得分:0)
我希望它能为您提供帮助。
#include<stdio.h>
int main()
{
int a[5]={5,1,15,20,25};
i=++a[1]; // i = 2
j=a[1]++; // j = 2
m=a[i++]; // m = 15, i = 3
printf("%d %d %d",i,j,m);
return 0;
}
答案 3 :(得分:0)
代码
#include <stdio.h>
int main() {
int a[5] = { 5, 1, 15, 20, 25 };
i = ++a[1];
j = a[1]++;
m = a[i++];
printf("%d %d %d", i, j, m);
return 0;
}
让我们逐步进行此操作。
a [1]为1
i是++ 1,即.... 2
m是a [i],是a [2],即... 15
此语句执行后,i ++
在m = 15之后
我变成3,
这些值是使用printf打印的
答案 4 :(得分:0)
让我们逐步进行:
uint32_t