我有一个C ++ / CLI中的双重属性我需要强制转换为整数,但编译器在我这样做时会给出警告(c4244)。例如:
//"Value" is a double
int newValue = (int)(control->Value); //C4244
我理解编译器不满意因为double可能比int更大,但是这个特定的控件保证是1到10之间的值,所以 I 知道它会好的。我能以某种方式消除这种警告吗?
答案 0 :(得分:2)
编译器警告你不仅可能会超出范围,而且可能会丢失信息(它需要以某种方式对数字进行舍入,并且害怕自己完成)。
使用floor()
告诉您,您知道自己在做什么:
int newValue = floor(control->Value);
或者你可以明确地演示只是为了告诉编译器没有任何隐含的内容,你知道你在做什么:
int newValue = (int)(float)(control->Value);