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

ehr*_*emo 5 c++ string indexing int integer

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

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

void main()
{
  int x = 1["WTF?"];
}
Run Code Online (Sandbox Code Playgroud)

在VC++ 10上,这个编译并在调试模式下x,语句之后的值为84.

这是怎么回事?

jro*_*rok 9

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

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

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

  • *main的+1必须返回int*:) (3认同)

Dam*_*ask 3

int x = 1["WTF?"];
Run Code Online (Sandbox Code Playgroud)

等于

int x = "WTF?"[1];
Run Code Online (Sandbox Code Playgroud)

84 是“T”ascii 代码