1

Stroustrup 书中的以下代码中,我们被警告不要在我的版本 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;
}

正如在 ideone上演示的那样,这是一个错误还是我没有使用编译器的适当命令行参数运行?或者这是否意味着纯粹的语义错误?

4

2 回答 2

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 支持中的一个错误。

于 2013-06-14T16:42:55.180 回答
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
于 2013-06-14T18:01:55.113 回答