今日は非常に奇妙な問題に遭遇しました。次のコードを考えてみましょう。
int llex(){
cout<<"enter 1"<<endl;
char32_t c = U'(';
cout<<(c==U'#')<<endl;
switch(c){
case U'#':
cout<<"enter 2"<<endl;
return 5;
default:
break;
}
}
int main( int argc, char** argv)
{
cout<<"enter 1"<<endl;
char32_t c = U'(';
cout<<(c==U'#')<<endl;
switch(c){
case U'#':
cout<<"enter 2"<<endl;
return 5;
default:
break;
}
cout << "------------" << endl;
llex();
}
出力は次のとおりです。
enter 1
0
------------
enter 1
0
enter 2
main のコードはllex
function のコードと同一であることに注意してください。なぜ彼らは異なる結果を出力するのですか? (clang で C++11 を使用しています)。