为什么我编写的C语言简单除法代码部分场景下会返回0?
问题原因
你的代码问题出在整数除法规则上:
- C语言中,两个
int类型的变量做/运算时,默认执行整数除法,会直接舍弃计算结果的小数部分,只保留整数位。 - 当被除数的绝对值小于除数的绝对值时,整数除法得到的整数位就是0,哪怕你把结果赋值给
double类型变量,也只能拿到已经被截断为0的结果,不会自动补回小数部分。
修复方法
只需要在做除法前,把其中一个操作数强制转换为浮点类型,触发浮点除法即可:
#include<stdio.h> int main() { int a,b; scanf("%d%d",&a,&b); // 把a强转为double后再做除法,b会自动提升为double类型,执行浮点除法 double D= (double)a / b; printf("%.4lf",D); }
额外优化建议
你当前的代码没有做除数为0的校验,后续可以补充对应的判断逻辑,避免程序运行异常。
内容的提问来源于stack exchange,提问作者Ernest1999
相关产品推荐
相关产品推荐

