可能是重复问题:
在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。main
必须返回int
。0x003F4654
,因为你将变量x
声明为int
而不是char
。 - puppydrum64int x = 1["WTF?"];
等于
int x = "WTF?"[1];
84是“T”的ASCII码。
[]
应用于指针和整数时,a[b]
等同于*(a+b)
。由于加法是可交换的,这等同于*(b+a)
,根据[]
的定义,这又等同于b[a]
。
operator [](int)
的情况,这个代码会起作用吗:5[myType()]
? - paul23int*
的强制转换运算符。它确实可以做到你想要的事情。愉快的时光。 - WhozCraigi++[arName]
之类的代码。这可以让他们保持警惕 =P - WhozCraig