例如:
int a = 10;
float b 1.5;
a*=b; //"warning C4244: '*=' : conversion from 'float' to 'int', possible loss of data"
我想压制这个警告。当然,为什么要这样做是:
a = (int)(a*b);
所以实际上我有两个问题:
答案 0 :(得分:1)
有没有办法继续使用运算符赋值并在其间插入?
没有。 R a *= b
上的任何内容都会影响b
,而不会影响产品a*b
。
有没有办法可以使用强制转换来抑制警告?
使用最近的整数函数来处理转换。下面的2个函数舍入到最近而不是截断,如some_int = some_float
。
#include <math.h>
// long int lrintf(float x);
// round their argument to the nearest integer value
// rounding according to the current rounding direction.
int a = 10;
float b = 1.5;
a = lrintf(a * b);
// or
// long int lroundf(float x);
// The lround and llround functions round their argument to the nearest integer value,
// rounding halfway cases away from zero, regardless of the current rounding direction.