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

时间:2013-01-17 12:01:33

标签: c++ string indexing integer int

  

可能重复:
  In C arrays why is this true? a[5] == 5[a]

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

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

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

发生了什么?

3 个答案:

答案 0 :(得分:9)

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

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

您可以在此处阅读更深入的讨论:In C arrays why is this true? a[5] == 5[a]

答案 1 :(得分:3)

int x = 1["WTF?"];

等于

int x = "WTF?"[1];

84是“T”ascii代码

答案 2 :(得分:1)

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