cout<a+<a;的正确答案是什么?
最近在一次采访中,有一个下面的客观类型的问题。
int a = 0;cout << a++ << a;
回答:
a.10b.01C.未界定的行为
我回答了选择b,即输出为“01”。
但令我惊讶的是,后来一位面试官告诉我,正确的答案是选项c:未定。
现在,我知道了C+中序列点的概念。以下语句未定义此行为:
int i = 0;i += i++ + i++;
但根据我对声明的理解cout << a++ << a,ostream.operator<<()会被调用两次,第一次是ostream.operator<<(a++)后来ostream.operator<<(a).
cout << a++ << a
ostream.operator<<()
ostream.operator<<(a++)
ostream.operator<<(a)
我还检查了VS 2010编译器的结果,它的输出也是‘01’。
神不在的星期二
12345678_0001
相关分类