在下面的代码中,我尝试使用增量运算符添加数组的两个元素,但我得到的输出总和是错误的。如果我在代码中犯了任何错误,请帮助我
#include <stdio.h>
int main(void) {
int a[2];
int top=-1;
a[++top]=10;
a[++top]=20;
printf("a0 is %d \n",a[0]);
printf("a1 is %d \n",a[top]);
printf("value of sum is %d \n",a[top]+a[--top]);
}
最后一行的输出应该是 30 作为 i 并对数组中的两个值求和。但我得到的输出如下
a0 is 10
a1 is 20
value of sum is 20
最佳答案
您的程序有未指定的行为。在表达式a[top]+a[--top]
中,C和C++语言标准没有指定a[top]
和a[中的哪一个--top]
将首先被计算,并且它们不指定何时相对于其他表达式执行 --
运算符。编译器可以根据他们认为合适的方式对其进行评估。您首先计算 --top
,将 top
设置为 0,然后计算 a[0]+a[0]
,得到 20 .
不要在表达式中使用一个变量两次,并在其中对其进行前后递增或递减。
关于c++ - 使用增量运算符添加数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32409453/