在Stroustrup's book的以下代码中,我们会收到来自缩小转换的错误的警告,该错误在我的版本GCC上没有发生(4.7.2)
#include <iostream>
using namespace std;
int main()
{
int i1 = 7.2;
int i2{7.2};
cout << i1 << " " << i2 << endl;
return 0;
}
如此处所示at ideone这是一个错误,还是我没有使用编译器的相应命令行参数运行?或者这是纯粹的语义错误?
答案 0 :(得分:2)
使用g ++ 4.8.1:
foo.cpp: In function 'int main()':
foo.cpp:8:15: warning: narrowing conversion of '7.2000000000000002e+0' from 'double' to 'int' inside { } [-Wnarrowing]
int i2{7.2};
^
我认为这只是4.7.2的c ++ 11支持中的一个错误。
答案 1 :(得分:1)
当我使用-std = c ++ 0x:
时,我收到GCC 4.7.3的缩小警告g++ -std=c++0x test.cpp
test.cpp: In function ‘int main()’:
test.cpp:8:23: warning: narrowing conversion of ‘7.2000000000000002e+0’ from ‘double’ to ‘int’ inside { } [-Wnarrowing]
g++ --version
g++ (GCC) 4.7.3