我这里有一个方程,我无法理解 C++ 如何处理它。有人能解释一下这个操作吗?
代码:
#include <stdio.h>
main(){
int a[10] = {0,1,2,3,4,5,6,7,8,9};
int i = 0;
int num = a[i+++a[++i]]+a[++i+i++];
printf("\nnum1: %d i: %d,num,i);
}
为什么答案 num = 9 而索引 i 正好等于 4;
最佳答案
在同一变量的同一表达式中使用两次 ++
是 C 和 C++ 标准的所有版本都明确未定义的,因此 i
不一定等于4
。它可以是编译器作者一时兴起的任何东西。
永远不要这样做。切勿在同一表达式中两次使用 ++
和 --
。没有办法对结果值做出任何声明,并且对于一个编译器的作用的经验对于另一个编译器的作用没有任何意义。
关于c++ - C++ 如何处理这个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28978192/