我将Cosmic C编译器用于STM8微控制器并使用浮点变量。对于当前使用的平台,编译器不提供双重类型。无论如何,当一个人使用双打时,他们被视为浮子。
我想知道是否需要将使用例如类型的浮点数加倍。晶圆厂()?
它被声明为double fabs(double x);
我在编译器文档中没有找到任何关于此的内容。
但即使没有进行类型转换,它也会在没有警告的情况下进行编译。 顺便说一下,当我把双重与浮动混合时,GCC也会在没有警告的情况下编译。
答案 0 :(得分:0)
数字促销
每当将一种类型的值转换为更大的相似数据类型的值时,这称为数字提升(或扩展,尽管此术语通常保留为整数)。例如,int可以扩展为long,或者float可以提升为double:
1 2 长l(64); //将整数64加宽为long 双d(0.12f); //将float 0.12提升为double 虽然术语“数字促销”涵盖任何类型的促销,但在C ++中还有另外两个具有特定含义的术语:
整数提升涉及将比int更窄的整数类型(包括bool,char,unsigned char,signed char,unsigned short,signed short)转换为整数(如果可能)或unsigned int。 浮点提升涉及将float转换为double。 在特定情况下,使用整数提升和浮点提升将较小的数据类型转换为int / unsigned int或double,因为这些数据类型通常是执行操作的最高性能。
关于促销的重要事项是它们始终是安全的,不会导致数据丢失。
来源:
http://www.learncpp.com/cpp-tutorial/44-implicit-type-conversion-coercion/