可能重复:
在 C 数组中,为什么这是真的?a[5] == 5[a
] 在 C 和 C++ 中通过 index[array] 访问数组
我刚刚发现我的代码中似乎有一个错误,但它不仅可以编译,而且最初也可以按预期工作......
考虑以下代码片段:
#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 中的自动错误修复可能吗?;)
非常感谢,
干杯!