☰
  • 首页
  • 规则分类
  • 项目介绍
search
•••

数组下标应为整型表达式

10.10.3 ID_oddSubscripting
目录 › next › previous

C/C++ 语言规定,数组下标可以在中括号的右侧也可以在左侧,然而这只是一种理论上的设计,在实际代码中应采用约定俗成的方式,即数组的名称在中括号的左侧,下标在中括号的右侧。

示例:

void fun() {
    int a[5] = {1, 2, 3, 4};
    4[a] = 5;                       // Non-compliant, use a[4] instead
    for (int i = 0; i < 4; i++) {
        cout << i + 1[a] << '\n';   // Non-compliant, may be a[i + 1]
    }
}

由于 a[4] 相当于 *(a+4),所以与其等价的 *(4+a) 也应该可以解释为 4[a],但下标在左侧的写法容易造成运算符优先级相关的问题,将下标写在右侧才是符合惯例的方式。

依据

ISO/IEC 9899:1999 6.5.2.1(2) ISO/IEC 9899:2011 6.5.2.1(2) ISO/IEC 14882:2003 8.3.4(6) ISO/IEC 14882:2011 8.3.4(6)
Copyright©2024 360 Security Technology Inc., Licensed under the Apache-2.0 license.