繁体   English   中英

缩小从 char 到 double 的转换

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM