gpt4 book ai didi

c - 为什么输出是0.000000? (C)

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

有人可以帮我告诉我为什么这里的输出应该是 2.500000 却是 0.000000 吗?只有当我把它放在打印命令的第一行时,如果它位于打印组的中间,那么它运行良好并输出 2.500000 ..那为什么是0呢? for screenshot click here

#include <stdlib.h>
#include <stdio.h>


int main()
{
int a = 65;
char c = (char)a;
int m = 3.0/2;

printf("%f\n", 5 / 2);
printf("%c\n", c); // output: A
printf("%f\n", (float)a); // output: 65.000
printf("%f\n", 5.0 / 2); // output: 2.5000
printf("%f\n", 5 / 2.0); // output: 2.5000
printf("%f\n", (float)5 / 2); // output: 2.5000
printf("%f\n", 5 / (float)2); // output: 2.5000
printf("%f\n", (float)(5 / 2)); // output: 2.0000
printf("%f\n", 5.0 / 2); // output: 2.5000
printf("%d\n", m); // output: 1



system("PAUSE");
return(0);
}

谢谢,汤姆。

最佳答案

在第一行中,当您将整数 5 除以整数 2 时,计算机会进行整数除法,并丢弃余数,得到 2(而不是 2.5)。结果是一个整数,但您尝试使用 %f 打印它,这就是为什么您看到 0 而不是 2。

<小时/>

回答你的第二个问题:当你将一个普通的 int 传递给 printf 但告诉它使用 %f 打印它时,printf 基本上从堆栈中获取随机垃圾充实它试图打印的 float 的其余部分。无论它在堆栈上找到什么随机垃圾,都取决于(除其他外)您最近调用过哪些其他函数。当您将 printf 调用移到中间时,随机垃圾恰好排列起来并给出了半有意义的结果,这纯粹是运气。

关于c - 为什么输出是0.000000? (C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33788210/

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