重複の可能性:
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 の自動バグ修正?;)
どうもありがとう、
乾杯 !