C++ 的 int 整型:7 除以 2 为什么等于 3?
int 是装整数的类型,范围约 ±21 亿。两个 int 相除是整数除法:7 / 2 得 3,
小数部分直接舍去。配套运算符 % 取余数:10 % 3 得 1。要小数结果,改用 double。
整数的存储
int 是最常用的整数类型,日常计数、分数、年龄都用它。它能装的数有上限:常见环境下约 ±21 亿。超出范围会溢出——结果不是报错,而是一个错误的值。溢出的实况演示见第 12 课,本课先建立"int 有边界"的直觉。
整数除法:本课重点
cout << 7 / 2 << endl; // 输出 3,不是 3.5
cout << 7.0 / 2 << endl; // 输出 3.5
规则:两个整数相除,结果还是整数,小数部分直接舍去(注意是舍去,不是四舍五入,所以 7 / 2 得 3 而不是 4)。只要参与运算的至少一边是小数,结果就是小数。
取余运算 % 与整数除法配套:a / b 是商,a % b 是余数:
int a = 10, b = 3;
cout << a / b << endl; // 3
cout << a % b << endl; // 1
判断一个数是奇是偶(n % 2)、能否整除,都是 % 的典型用途。
可视化观察
在 CppStudio 中打开本课示例,点击播放:
- 第一条 cout 输出
3——可以暂停确认:不是 3.5; - 第二条 cout 输出
3.5——与第一条逐字对照,差别只在7.0; - 变量 a、b 定义后出现在监视区,执行除法和取余时对照监视区心算一遍,再与输出核对。
常见错误
- 期待小数却用整数除法:算平均分写成
sum / count得整数,应写sum * 1.0 / count或使用 double; - 除数为 0:
a / 0程序直接崩溃或得到未定义结果,除法前确认除数非 0; - 溢出无提示:两个大数相乘超出 int 范围不会报错,只会得到错误答案,数值大时换 long long。
下一课:浮点数 double——小数怎么存,以及 0.1 + 0.2 为什么不是 0.3。
▶ 运行本课示例 弹窗里直接跑,流程图同步展开;也可新窗口打开
常见问题
C++ 中 7/2 的结果是什么?
3。两个 int 相除执行整数除法,直接舍去小数部分(不是四舍五入)。要得到 3.5,至少一边写成小数:7.0 / 2。
int 最大能装多大的数?
常见环境下约 ±21 亿(-2147483648 到 2147483647)。超过范围会溢出,得到错误结果。更大的整数用 long long,见第 12 课。
'%' 是什么运算?
取余。10 % 3 得 1,即 10 除以 3 的余数。判断奇偶、整除、按位循环都靠它,是入门阶段使用频率很高的运算符。