两个 int 相除为什么是 3 不是 3.5?把整数除法截断看明白。
+ - * / 做四则运算;| 写法 | 含义 | 例子(a=7,b=2) |
|---|---|---|
a + b | 加法 | 9 |
a - b | 减法 | 5 |
a * b | 乘法(星号,不是 ×) | 14 |
a / b | 除法;两边 int → 结果 int | 3(截断) |
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。7/2=3 不是算错,而是取整数份:7 块糖分给 2 个人,每人拿 3 整块,剩 1 块就是余数(下一节 % 讲)。
计算机砍掉小数,和你平时分页数、按人头均摊、把秒数折成分钟是一回事——先取整份,余下的再说。
这正是为什么"整数除法"和"取余"总是一对出现:n/60 算整分钟,n%60 算剩余秒。
先想清楚"这题我要整数份,还是要带小数的精确值",再决定要不要加 double。
cout << 10 / 4; 的输出?cout << n/60 << " 分 " << n%60 << " 秒";
—— n/60 取整分钟,n%60 取剩余秒,这正是"整数除法 + 取模"的标准搭配。