【发布时间】:2016-06-25 04:55:13
【问题描述】:
考虑一下代码sn-p:
int main()
{
int n;
cout<<n;
float f;
cout.setf(ios_base::fixed,ios_base::floatfield);
cout<<endl<<f;
char ch;
cout<<endl<<static_cast<int>(ch);
return 0;
}
输出:
0
0.000000
0
为什么它没有设置为垃圾值而不是零?这是未定义行为的结果吗?在Ubuntu 14.04 上使用g++4.8.2 编译。
【问题讨论】:
-
零是一个完全有效的“垃圾”数字,在任何情况下它都是未定义的行为,如果需要,您的实现可以打印“foobar”。
-
虽然很难用数字打印“foobar”
-
用
-O3编译,你可能会得到不同的结果