[英]Narrowing conversion from char to double
为什么会有警告
缩小从 char 到 double 的转换
我已经知道对于 const char 不会有警告。 有很多关于这个的答案。 但我想知道,为什么非常量字符会有“可能缩小”的警告?
在某些系统上,尾数是否可能不足以完美表示字符?
int main() {
char c{7};
double a{c};
}
4:13:警告:在 { } [-Wnarrowing] 中缩小从“char”到“double”的“c”转换
它正在缩小,因为标准是这样说的。
7收缩转换是隐式转换
[...]
(7.3) —从整数类型或无作用域枚举类型到浮点类型,除非源是常量表达式并且转换后的实际值将适合目标类型,并在转换回原值时产生原始值原始类型 [...]
列表初始化中不允许缩小。 使用显式转换(强制转换)。
double a{static_cast<double>(c)};
是的,理论上允许char
不能完全表示为double
,例如,当两者都是 32 位类型时。 这是人为的,但标准允许这样的实现。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.