ehr*_*emo 5 c++ string indexing int integer
这怎么可能是有效的C++?
void main()
{
int x = 1["WTF?"];
}
Run Code Online (Sandbox Code Playgroud)
在VC++ 10上,这个编译并在调试模式下x,语句之后的值为84.
这是怎么回事?
数组下标运算符是可交换的.它相当于int x = "WTF?"[1];Here,"WTF?"是一个5 chars 的数组(它包含null终止符),并[1]给我们第二个char,它是'T'- 隐式转换为int它给出值84.
Offtopic:代码片段无效C++,实际上 - main必须返回int.
您可以在这里阅读更深入的讨论:在C数组中,为什么这是真的?a [5] == 5 [a]
int x = 1["WTF?"];
Run Code Online (Sandbox Code Playgroud)
等于
int x = "WTF?"[1];
Run Code Online (Sandbox Code Playgroud)
84 是“T”ascii 代码