gpt4 book ai didi

c - 格式字符串 '%g' 需要类型为 'double' 的参数,但可变参数 1 的类型为 'long'

转载 作者:行者123 更新时间:2023-11-30 21:13:52 25 4
gpt4 key购买 nike

我收到了警告(不是错误),如代码标题中所写:

printf("value=%g\n", 5L);

我知道这不是错误,但为什么会出现警告?尽管 long 存储了更多信息,为什么我们可以或不能使用 long 代替 double

最佳答案

long 存储更多信息”是完全错误的。如果 long 是 32 位(我相信它在 Windows/MSVC 上),它存储的信息要少得多,如果它是 64 位,它存储的信息量相同,因为 double 是 64 位,但以不同的方式使用/解释该信息(如符号/指数/尾数)。

然而,这很大程度上偏离了重点。如果 printf 的实际参数类型与格式说明符不匹配,C 不会定义行为,并且在实践中,它们不匹配不会产生合理/有意义的结果。不要这样做。使用与您拥有的类型相匹配的正确格式说明符,或者转换为您希望格式化的类型(请注意转换可能会丢失信息)。

关于c - 格式字符串 '%g' 需要类型为 'double' 的参数,但可变参数 1 的类型为 'long',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59323373/

25 4 0
文章推荐: javascript - 处理 ReactJS 表单中的