8

在 Visual C++ 2012 中的代码

double d = 0.5;
float f = d;
int i = f;

为我发出 2 个警告:

test.cpp(26): warning C4244: 'initializing' : conversion from 'double' to 'float', possible loss of data
test.cpp(27): warning C4244: 'initializing' : conversion from 'float' to 'int', possible loss of data

我想禁止我认为是垃圾邮件的第一个警告,但保留我认为非常有帮助的第二个警告。是否有可能压制一个并保留另一个?人们通常只是压制他们吗?我们有一个严重的错误,我们错误地将双精度数传递给浮点数。但是我们大量的数学代码会触发 double->float 警告。

4

1 回答 1

3

不要抑制旨在防止潜在错误的警告。通过强制转换告诉编译器你知道你在做什么:

double d = 0.5;
float f = static_cast<float>(d);
int i = static_cast<int>(f);
于 2013-11-09T05:16:18.973 回答