我最近下载了MinGw编译器,出于某种原因,当我应该进行显式转换时,它不显示和警告消息。
例如:
double x=9.97;
int y=x;
编译器似乎没问题。我只是想知道我是否需要安装其他软件包
答案 0 :(得分:6)
将double
分配给int
时,无需强制转换。小数部分简单地被截断。如果您需要警告,可以使用-Wconversion
或-Wfloat-conversion
。
答案 1 :(得分:0)
为了补充其他答案,可以在http://en.cppreference.com/w/c/language/conversion上找到有关隐式转换语义的技术说明:
任何实数浮点类型的有限值都可以隐式转换为任何整数类型。除上述布尔转换所涵盖的范围外,规则为:
- 丢弃小数部分(截断为零) 。如果结果值可以由目标类型表示,则使用该值 。否则,行为未定义