可能重複:
In C arrays why is this true? a[5] == 5[a]
Accessing arrays by index[array] in C and C++不可能的C++數組索引
我剛剛找到了似乎是在我的代碼中的錯誤,但不是唯一的彙編,它也適用如預期最初...
請考慮以下代碼snipet:
#include <string>
#include <iostream>
using namespace std;
class WeirdTest
{
public:
int value;
string text;
WeirdTest() : value(0),
text("")
{}
virtual ~WeirdTest()
{}
void doWeirdTest()
{
value = 5;
string name[] =
{
"Zero",
"One",
"Two",
"Three",
"Four",
"Five"
};
text = value[name];
cout << "text: " << text << endl;
}
};
int main(int argc, char** argv)
{
WeirdTest test;
test.doWeirdTest();
return 0;
}
而不是text=value[name];
它應該是text=name[value];
但編譯器不會抱怨,並且無論「錯誤」是否存在,生成的二進制代碼都完全相同。 我正在編譯使用g ++ 4.6.3,如果有人知道這裏發生了什麼,我會非常感激。這是否是我錯過的標準?自動錯誤修復在C++ 0x也許? ;)
非常感謝,
乾杯!
它是從C繼承的行爲。請參見:http://www.c-faq.com/aryptr/joke.html – jamesdlin
請參閱http://stackoverflow.com/questions/8969684/accessing-array-contents-xn -vs-nx/8969755#8969755或http://stackoverflow.com/questions/5073350/accessing-arrays-by-indexarray-in-c-and-c – hmjd