#include<stdio.h>
int main() {
printf("%f", 11/ 3);
return 0;
}
上面这段代码为什么输出0.000000啊,我直觉认为是3.00000.
11/3得到3,然后转换为浮点数3.000000
请问结果为什么是0.00000啊
感谢
#include<stdio.h>
int main() {
printf("%d", 11/ 3);
return 0;
}
或者
#include<stdio.h>
int main() {
printf("%f", (float)(11.0/ 3));
return 0;
}
该回答引用gpt
在这段代码中,11和3都是整型(int)变量,所以11/3的结果也是整型,即3。接着,printf函数中使用了%f格式符输出3,但是3是整型,当它被传递给printf函数时,会被自动转换为浮点型(double),所以实际上输出的是3.000000的浮点型值,但是由于%f格式符是用来输出浮点型变量的,所以在输出整型值时需要使用%d格式符,同时需要将3强制转换为浮点型,如下所示:
#include<stdio.h>
int main() {
printf("%f", (float)11/ (float)3);
return 0;
}
这样就能正确输出3.666667了。
供参考:
#include<stdio.h>
int main() {
printf("%f\n", 11 / 3); // 11 3 是两个整数, / 符对两个整数做整除运算,得到的也是个整数,所以格式符需用 %d 才有输出
printf("%d\n", 11 / 3);
printf("\n");
printf("%f\n", (float)11 / 3); // 两个整数整除通过强制类型转换输出实数结果
printf("%f\n", 11.0 / 3);// 或者将其中一个整数写成实数的类型
printf("%f\n", 11 / 3.0);
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话: