整数用c ++中的字符串索引

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

这怎么可能是有效的C ++?

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

在VC ++ 10上编译并且在调试模式下,语句后x的值是84。

这是怎么回事?


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

Offtopic:代码片断不是有效的C ++,实际上 - main必须返回int

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


int x = 1["WTF?"];

等于

int x = "WTF?"[1];

84是“T”ascii码


之所以这么做,是因为当内置的operator []应用于指针和int时, a[b]等价于*(a+b) 。 哪一个(加法是可交换的)等价于*(b+a) ,根据定义[] ,它等价于b[a]

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

上一篇: integer indexed with a string in c++

下一篇: Where can I put an array subscript?