gpt4 book ai didi

c - C 中的数据类型混淆

转载 作者:太空狗 更新时间:2023-10-29 17:27:18 24 4
gpt4 key购买 nike

以下代码有效:

int main(void)
{
float f = get_float();
int i = round(f*100);
printf("%i\n", i);
}

然而,如果以这种方式编码会产生错误:

printf("%i\n", round(1.21*100));

输出表明 round(1.21*100)float。那么,为什么

int i = round(f*100); 

还好吗?

最佳答案

当你做的时候

int i = round(f*100); 

转换 double 函数的结果 round .转换后的结果存储在 int 变量 i 中,它可以与 "%i" 格式一起使用,因为它需要一个 int 参数。

当您将 rounddouble 结果直接作为参数传递给需要 int 的格式时,您的格式和参数类型不匹配.这会导致未定义的行为

printf 的调用中没有进行任何转换,并且不能进行任何转换,因为 printf 函数中的代码不知道参数的实际类型。它只知道格式 "%i"。对于可变参数函数,所有可能的类型信息都会丢失。

关于c - C 中的数据类型混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45185502/

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