gpt4 book ai didi

c - 当 double 值超出 char 范围时,C 中的 Double 到 char 转换规则

转载 作者:行者123 更新时间:2023-12-02 06:28:00 25 4
gpt4 key购买 nike

我已经问过一个密切相关的question这是相同的扩展情况。

考虑下面的代码:

#include<stdio.h>
int main(void)
{
char c1 = 3000.5;
printf("%d\n",c1);
}

上面代码的输出是
127

请解释右边的double值如何转换为char。
我对流程的理解如下:

浮点表示中的 double 值 3000.5 如下:
01000000 10100111 01110001 0000000000000000 00000000 00000000 00000000

如果我们只考虑最后 8 位,那么得到的二进制数是
00000000

在 2 的补码表示中是十进制 0。这与结果不一致。

如果我们忽略小数部分,那么我们得到 3000,当转换为 char 时,结果是 -72,这又与结果不一致。

如果我对这个概念有错误的理解,请纠正我。

最佳答案

发生的是 real floating-integer conversion ,发生的是

The fractional part is discarded (truncated towards zero).

  • If the resulting value can be represented by the target type, that value is used
  • otherwise, the behavior is undefined


由于截断值 3000 太大而无法放入 char 中,因此您有 undefined behavior

关于c - 当 double 值超出 char 范围时,C 中的 Double 到 char 转换规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50652911/

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