gpt4 book ai didi

c++ - 为什么 C 没有正确的隐式转换实现?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:55:33 26 4
gpt4 key购买 nike

以下代码打印 99,其中 'c' 已隐式转换为 99。

printf("%d", 'c');

但是下面的代码打印出 0.000000:

printf("%f", 23);

为什么在第二种情况下整数 23 没有像第一种情况那样转换为 23.00000?这是否反射(reflect)了 C 中隐式转换的糟糕实现?提前致谢。

编辑:如果答案之一无法从 int 提升到 float,那么为什么在我们编写时将 int 提升到 float

float x = 23;

为什么会这样?

最佳答案

在 C 语言中,'c'一个int。不执行任何转换。

即使它是一个 char(就像在 C++ 中一样),char 也是一个整数类型,并且在像 printf 这样的可变参数列表中,所有可变参数都经过算术提升,这将自动将 char 扩展为 int,或将 float 扩展为 double -- 但不是 doubleint

关于c++ - 为什么 C 没有正确的隐式转换实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32283257/

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