在我的代码中发现了一个奇怪的行为。
代码:
char foo[] = {64, 1};
int i = 0;
char c = ((foo[i]) | (foo[(++i)]));
cout << "Text: " << c << " " << (int)c << endl;
结果:
Text: ☺ 1
我在看“文本:A 1”而不是“文本:☺ 1”。由于某种原因,编译器忽略了“| foo[++i]”部分。
那么解决方案很简单,它只需要另一条线,但我感兴趣的是知道这是一个编译器错误还是只是 c++ 很奇怪。
在 VC10 和 VC11 中测试。
编辑:将 () 添加到代码中,仍然是相同的行为。