这个C ++代码是否产生未定义的行为?

这个问题在这里已经有了答案:

  • 对于数组,为什么会出现[5] == 5 [a]? 17个答案
  • 这看起来不像一个功能。 这是什么? 5个答案

  • 这是完全合法的。 使用指针运算, a[42]等价于*(a + 42) ,其中(加法是可交换的)相当于*(42+ a) ,其(根据[]的定义等价于42[a]

    所以这是不明确的,但明确的。


    数组运算符是可交换的。

    a[n] == *(a + n) == *(n + a) == n[a]

    这完全合法。


    a[i]被定义为*(a+i)

    所以42[a] = a[42]; 而且它非常安全

    链接地址: http://www.djcxy.com/p/86727.html

    上一篇: Does this C++ code produce an undefined behavior?

    下一篇: Subscripting integer variable using a pointer