大数跨境
0
0

C语言 (float)(1/5)为什么得不到0.2

C语言 (float)(1/5)为什么得不到0.2 全栈数科
2025-05-29
0
导读:C语言中,(float)(1/5)的表达式为什么得不到0.2这个值,就像下面这段代码编译运行后,得到的输出是:0.000000
(float)(1/5)
C语言中,(float)(1/5)的表达式为什么得不到0.2这个值,就像下面这段代码编译运行后,得到的输出是:0.000000
#include <stdio.h>int main() {    float a = (float)(1/5);    printf("%f", a);        return 0;}
这是为什么呢?
可以先来理清一下(float)(1/5)的程序逻辑顺序。
1、该表达式会先计算(1/5),因为1和5的字面量都是整型,因此在C语言当中,(1/5)会得到0,也是一个整型;
2、之后再执行(float)的强制的类型转换,因此,(float)(1/5)在执行完(1/5)后的表达式应该是(float)(0),因此,(float)(1/5)表达式得不到0.2的值。
如何得到0.2的值?
可以将表达式修改为1/5.0或1.0/5,这样就不需要(float)来强制类型转换了。代码如下:
#include <stdio.h>int main() {    float a = 1.0/5;    float b = 1/5.0;    printf("a = %.1f;b = %.1f", a,b);        return 0;}
代码编译运行,得到输出:
a = 0.2;b = 0.2
免责声明:内容仅供参考,不保证正确性!

【声明】内容源于网络
0
0
全栈数科
Windows11电脑教程,安卓手机教程,数字应用知识分享社区!BMI体脂率身高体重腰围计算记录,原本的《全栈开发助手》账号的IT编程教程。
内容 2748
粉丝 0
全栈数科 Windows11电脑教程,安卓手机教程,数字应用知识分享社区!BMI体脂率身高体重腰围计算记录,原本的《全栈开发助手》账号的IT编程教程。
总阅读206
粉丝0
内容2.7k