我的代码简化为:
int x = 5;
x *= 0.5;
用 Visual Studio 编译它,我收到一个警告 C4244,关于可能丢失数据 - 当然,因为(简化)一个 int 乘以一个 double 会导致一个 double,然后将它转换为一个 int,丢失非整数部分.
我的问题是,是否有 C++ 语法来指示这是预期的行为,以便使警告静音(我知道 pragma push/pop 以禁用警告,我认为更清楚地表明这实际上是预期的行为,并且我不只是压制警告)。
长格式将是在乘法之后显式转换,如下所示:
x = (int)(x * 0.5);
但是复合运算符符号更容易阅读。
那么,有没有办法像这样投呢?我已经尝试将“(int)”放在我能想到的每个位置,但它们似乎都不是有效的 C++ :(