c++ - C++ 如何处理这个

标签 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;

最佳答案

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

永远不要这样做。切勿在同一表达式中两次使用 ++--。没有办法对结果值做出任何声明,并且对于一个编译器的作用的经验对于另一个编译器的作用没有任何意义。

关于c++ - C++ 如何处理这个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28978192/

相关文章:

C++ 函数模板错误

c++ - C++函数的默认参数是如何传递的?

c - 解释示例代码(c 编程)

c - 检查输入是否为字符串的更好方法是什么?

c - Atmega32A 与 PC 上的 UART 通信

c++ - 从 Qt C++ 中动态创建的 Qline 编辑中获取文本值

c# - 如何在C#和VB.NET中模拟C++ friend ?

c - 返回VLA和使用情况

c++ - 在我的 Linux C++ 项目中使用 Bullet

c - 使用来自 char 的良好数据时出现段错误