在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
我想压制我认为垃圾邮件的第一个警告,但保留第二个警告我认为非常有帮助。有可能压制一个并保持另一个吗?人们通常只是压制他们吗?我们有一个错误的错误,我们错误地将双重传递给浮动。但是我们的数学代码会触发双重>浮动警告。
答案 0 :(得分:5)
请勿禁止旨在防止潜在错误的警告。通过强制转换告诉编译器您知道自己在做什么:
double d = 0.5;
float f = static_cast<float>(d);
int i = static_cast<int>(f);