算术运算:+ - * / 怎么算

两个 int 相除为什么是 3 不是 3.5?把整数除法截断看明白。

GESPCSP-J

◎学完你会

1拖一拖:算给机器看

int a = 7, b = 2; cout << a+b << " " << a-b << " " << a*b << " " << a/b;

2关键命令

写法含义例子(a=7,b=2)
a + b加法9
a - b减法5
a * b乘法(星号,不是 ×)14
a / b除法;两边 int → 结果 int3(截断)
想得到 3.5 这种小数结果,只要让一边变成小数:7.0 / 2 或 (double)7 / 2。 计算机规则:除号两边只要有一个 double,整个除法就按小数算。

⚠易错点

把 5/2 当成 2.5:int 除 int 结果还是 int, 5/2 是 2,不是 2.5。5.0/2 或 (double)5/2 才是 2.5。
除数为 0:整数除以 0 程序直接崩溃(RE);分母不能是 0,竞赛里要先判边界。

?跨学科:整数除法截断,就是现实里的"凑整均摊"

7/2=3 不是算错,而是取整数份:7 块糖分给 2 个人,每人拿 3 整块,剩 1 块就是余数(下一节 % 讲)。 计算机砍掉小数,和你平时分页数、按人头均摊、把秒数折成分钟是一回事——先取整份,余下的再说。

这正是为什么"整数除法"和"取余"总是一对出现:n/60 算整分钟,n%60 算剩余秒。 先想清楚"这题我要整数份,还是要带小数的精确值",再决定要不要加 double。

✎练一练

下面哪个是 cout << 10 / 4; 的输出?
10 和 4 都是 int,10/4=2,小数部分 0.5 被截断;要 2.5 得写 10.0/4。
输入总秒数 n,用整数除法和取模输出"X 分 Y 秒"。例如 n=130 → "2 分 10 秒"。
答案:cout << n/60 << " 分 " << n%60 << " 秒"; —— n/60 取整分钟,n%60 取剩余秒,这正是"整数除法 + 取模"的标准搭配。