gpt4 book ai didi

c - 为什么我没有收到想要的输出 2.50000...?

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

当我输入“printf("%f\n", 5/2);”行时在第 18 行和第 21 行中,我没有得到 2.5000...而是 0.0000 和 65,我不明白为什么。

int main(void){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.000000
printf("%f\n", 5 / 2);
printf("%f\n", 5.0 / 2); // output: 2.5000000
printf("%f\n", 5 / 2.0); // output: 2.5000000
printf("%f\n", (float)5 / 2); // output: 2.5000000
printf("%f\n", 5 / (float)2); // output: 2.5000000
printf("%f\n", (float)(5 / 2)); // output: 2.0000000 - we cast only after division and result was 2
printf("%f\n", 5.0 / 2); // output: 2.5000000
printf("%d\n", m); // output: 1
system("PAUSE");
return 0; }

输出是:

0.000000
A
65.000000
65.000000
2.500000
2.500000
2.500000
2.500000
2.000000
2.500000
1

最佳答案

您不能使用%f 来格式化整数。这样做会调用未定义的行为。表达式 5/2 等于整数 2。您必须使用整数格式,例如 %d,或者将其转换为 double 以使用 %f。所以改变:

printf("%f\n", 5 / 2);

到:

printf("%d\n", 5 / 2);

或者:

printf("%f\n", (double) (5 / 2));

关于c - 为什么我没有收到想要的输出 2.50000...?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47180579/

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