一般默认 $64$ 位计算机系统中整型变量(int)还是 $32$ 位,则整数能够表示的数据范围是( )。
答案C。结合题目信息和所学知识分析。
仔细审题,注意"不正确""不属于""不是"等否定词。用排除法缩小范围。
【考点】二进制表示|有符号整数范围|数据类型特性
这道题被放在三级试卷,是因为它精准卡住"系统位宽≠类型位宽"这个几乎所有考生的认知盲区。命题人故意用"64 位系统"做干扰,测试你是否真正理解 int 在 C++ 中的规格化定义——它永远是 32 位,与系统架构无关。
解题思维链非常清晰:看到"整型变量(int)"和"32 位",立刻锁定这是考察有符号整数的二进制表示范围。核心推理:64 位系统只影响指针等类型的默认长度,int 默认仍为 32 位;32 位有符号整数最高位是符号位,剩余 31 位表示数值,因此范围是 $-2^{31} \sim 2^{31}-1$。这类题的通法是:先确认数据类型位宽,再根据有符号/无符号判断公式(有符号:$-2^{n-1} \sim 2^{n-1}-1$;无符号:$0 \sim 2^n-1$),最后代入计算。
命题人挖坑的手法很阴险。选项 A 把无符号 32 位范围误写为 $0 \sim 2^{32}$,其实是 $0 \sim 2^{32}-1$,利用"幂次范围"的模糊记忆;选项 D 直接套用 64 位有符号公式,是典型的系统位宽干扰;最阴险的是 $-2^{31}$ 的绝对值比 $2^{31}-1$ 大 1,若只背"有符号范围对称"就会掉坑。记住:有符号位宽 $n$ 时,负数多一个,正数少一个,这是补码本质。
反命题思维:若改成"64 位系统中 long long 范围",答案变 D;若改成"无符号 32 位",答案变 A(注意上限是 $2^{32}-1$)。刷到这类题先问:考的是系统位宽还是类型位宽?有符号还是无符号?别被"64 位系统"带偏。