
一起动脑筋 · 先看一个小故事
机器人要记录队伍人数。人数通常用 1、2、3 这样的整数,不会有 2.5 个同学。
把过程摊开来看
- 选择类型int
- 放入数据人数 7
- 做整数除法7 除以 2
- 得到结果3
int 用于保存一定范围内的整数。C++ 的整数除法会舍去小数部分,结果向零截断。
7 / 2 得 3。如果要表示平均每组 3.5 人这样的计算结果,需要使用合适的浮点运算。
01什么是 int?
int 是 C++ 的整数类型之一,用来保存没有小数部分的整数。
int age = 10;
int score = 95;
int temperature = -3;02int 能保存多大的数?
这取决于实现。现代常见系统里,int 通常是 32 位,范围通常是:
-2,147,483,648到2,147,483,647
但 C++ 标准没有要求 int 必须是 32 位,只要求它至少能表示从 -32767 到 32767 的范围。
03正数怎样存成二进制?
如果只看一个正整数,最基础的思想就是把十进制数表示成二进制。
13₁₀ = 1101₂
实际的 int 会使用固定数量的位来存储这个值。
04负数怎样保存?
现代计算机里的有符号整数通常采用二进制补码(two's complement)。
C++20 起,标准对有符号整数的表示也规定为二进制补码形式。
初学时先记住:负数并不是“前面简单加一个负号存进去”,而是有明确的二进制编码规则。
05int 为什么不能保存小数?
因为 int 的数据类型规则只表示整数。
int x = 3.8;
这里会发生数值转换,小数部分不会作为 int 保存,结果通常得到 3。
06为什么要关心整数范围?
因为如果计算结果超过类型能表示的范围,就会发生溢出问题。
特别是 C++ 中的有符号整数溢出属于未定义行为,不能简单理解成“自动绕回最小值”。
你已经知道了什么
int用来保存整数。- 现代常见平台上
int通常是 32 位,但标准没有规定必须如此。 - 正整数可以用二进制表示,负数通常使用补码表示。
int不保存小数部分。- 整数类型有范围,超出范围会产生严重问题。
下一篇:char 和 bool:字符与真假
轮到你来试一试
5 / 2 与 5.0 / 2 在 C++ 中结果一样吗?
想好了吗?点开看解释
前者是整数除法,得到 2;后者参与浮点运算,得到 2.5。数据类型会影响计算方式。