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

C语言算术运算规则疑问:整数除法结果不符数学预期求解

C语言整数除法与运算逻辑解析

1. 整数除法的核心规则

C语言里,两个整数类型(比如int)做除法时,会直接截断小数部分,只保留整数商,完全不会四舍五入:

  • 你代码里i=2、j=3,i/j的数学结果是0.666...,但整数除法后直接变成0;
  • j/i的数学结果是1.5,整数除法后变成1。

2. 运算符的执行顺序

/和*的优先级相同,运算遵循左结合(从左到右依次计算):

  • 对于k = i/j*j:先算i/j得到0,再用0乘j,最终结果是0,这就是为什么和你预期的数学结果2不一样;
  • 对于l = j/i*i:先算j/i得到1,再用1乘i,最终结果是2。

3. 浮点类型赋值的误区

虽然a、b是float类型,但i/j、j/i的运算还是在整数之间完成的,得到整数结果后才会自动转为浮点类型赋值:

  • a = i/j*j:先得到整数0,再转为0.0f;
  • b = j/i*i:先得到整数2,再转为2.0f。

想要得到数学上的正确结果?

只要把其中一个操作数强制转为浮点类型,就能触发浮点除法:

// 示例:将i转为float,让整个运算以浮点规则执行
float correct_result = (float)i / j * j;
// 此时结果就是2.0f

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 16:06:28