C ++如何处理这个问题

时间:2015-03-11 03:42:46

标签: c++ c

我在这里有一个等式,我无法理解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;

1 个答案:

答案 0 :(得分:2)

在同一个变量的同一表达式中使用++两次,C和C ++标准的所有版本都明确地未定义,因此i不一定等于4。它可能是编译器编写者随心所欲的任何东西。

永远不要这样做。切勿在同一表达式中使用++--两次。没有办法对结果值的含义作任何说明,也没有任何关于它对一个编译器的作用的经验将意味着与另一个编译器的作用有关。