整数用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] 。
