You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言中两种除法写法结果不同的原因是什么

两段C语言除法代码结果差异的核心原因

C语言中除法运算符/的执行逻辑由两侧操作数的类型决定:

  • 当两侧操作数均为整数类型时,执行整数除法,运算结果直接舍弃小数部分,仅保留整数位
  • 当两侧至少有一个操作数为浮点类型时,执行浮点除法,运算结果会保留完整的小数部分

第一段代码输出3.00的原因

第一段代码中15和4都是int类型的字面量,运算时会优先执行整数除法得到int类型的结果3,后续才会将该整数结果转换为float类型赋值给变量a,所以最终a的实际值为3.0,格式化输出后就得到3.00的结果。
核心逻辑等价于:

// 实际执行顺序
int temp = 15 / 4; // temp = 3
float a = (float)temp; // a = 3.0f

第二段代码输出正确结果的原因

第二段代码中参与除法运算的a和b均为float类型变量,/会触发浮点除法逻辑,直接计算得到完整的浮点结果3.75,赋值给res后输出就符合预期。

如果希望第一种写法也得到正确结果,只需将任意一个操作数改为浮点字面量即可,示例:

float a = 15.0 / 4;
// 或 float a = 15 / 4.0f;

内容的提问来源于stack exchange,提问作者Mac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 15:54:06