在 C++ 中使用字符串索引的整数



可能的重复项:
在 C 数组中,为什么会这样?a[5] == 5[a]

这怎么可能C++有效?

void main()
{
  int x = 1["WTF?"];
}

VC++10 上,这将编译,在调试模式下,语句后 x 的值为 84。

这是怎么回事?

数组下标运算符是可交换的。它相当于 int x = "WTF?"[1]; 在这里,"WTF?" 是一个 5 char s 的数组(它包括 null 终止符(,[1]给了我们第二个字符,即 'T' - 隐式转换为 int 它给出的值 84。

题外话:代码片段无效 C++,实际上 - main必须返回int .

你可以在这里阅读更深入的讨论:在C数组中为什么这是真的? a[5] == 5[a]

int x = 1["WTF?"];

等于

int x = "WTF?"[1];

84是"T"ASCII码

这样做的

原因是,当内置运算符[]应用于指针和整数时,a[b]等效于*(a+b)。哪个(加法是可交换的(等价于*(b+a),根据[]的定义,它等价于b[a]

相关内容

  • 没有找到相关文章

最新更新