This question already has answers here:
Undefined behavior and sequence points
                                
                                    (5个答案)
                                
                        
                                4年前关闭。
            
                    
我在这里有一个方程式,我不明白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/

10-10 18:18