gpt4 book ai didi

c++ - 缩小从 char 到 double 的转换

转载 作者:太空狗 更新时间:2023-10-29 20:49:45 25 4
gpt4 key购买 nike

为什么会有警告

narrowing conversion from char to double

我已经知道对于 const char 不会有警告。对此有很多答案。但我想知道,为什么对于非 const char 会有“可能缩小”警告?

有没有可能在某些系统上尾数不大,无法完美地表示字符?

int main() {
char c{7};
double a{c};
}

4:13: warning: narrowing conversion of 'c' from 'char' to 'double' inside { } [-Wnarrowing]

最佳答案

它正在缩小,因为标准是这么说的。

7 A narrowing conversion is an implicit conversion
[...]
(7.3) — from an integer type or unscoped enumeration type to a floating-point type, except where the source is a constant expression and the actual value after conversion will fit into the target type and will produce the original value when converted back to the original type [...]

在列表初始化中不允许缩小。使用显式转换(强制转换)。

double a{static_cast<double>(c)};

是的,理论上 char 可以不完全表示为 double,例如当两者都是 32 位类型时。这是人为设计的,但标准允许这样的实现。

关于c++ - 缩小从 char 到 double 的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57491990/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com