变量与数据类型
概念讲解
基本数据类型
| 类型 | 大小 | 范围 | 用途 |
|---|---|---|---|
| int | 4 字节 | -2³¹ ~ 2³¹-1 | 整数 |
| long long | 8 字节 | -2⁶³ ~ 2⁶³-1 | 大整数 |
| float | 4 字节 | 约 6-7 位有效数字 | 小数 |
| double | 8 字节 | 约 15-16 位有效数字 | 高精度小数 |
| char | 1 字节 | -128 ~ 127 | 字符 |
| bool | 1 字节 | true/false | 布尔值 |
变量声明
12345int a = 10;
long long b = 1000000000000LL;
double c = 3.14;
char d = 'A';
bool e = true;常见陷阱
1. 整数溢出
12int a = 2147483647; // int 最大值
int b = a + 1; // 溢出!b = -21474836482. 浮点精度
12double a = 0.1 + 0.2;
if (a == 0.3) { ... } // 可能不成立!3. 类型转换
123int a = 5;
double b = a; // int -> double,OK
int c = 3.7; // double -> int,c = 3(截断)考点分析
初赛考查方式
- 选择题: 数据类型范围
- 程序阅读: 溢出判断
- 填空题: 类型转换
常见题型
- 数据类型范围
- 整数溢出
- 类型转换
例题精讲
例题 1:数据类型范围
题目: int 类型能表示的最大正整数是多少?
解答:
2147483647 (2³¹-1)例题 2:整数溢出
题目: 以下代码的输出是什么?
123int a = 2147483647;
int b = a + 1;
cout << b;解答:
-2147483648
溢出变成最小负数练习题
- long long 类型能表示的最大正整数是多少?
查看答案
9223372036854775807(即 )
long long 占 8 字节,范围是 到 。
- 以下代码的输出是什么?
123int a = 5;
double b = 2;
cout << a / b;查看答案
输出:2.5
a / b 中 a(int)自动转换为 double,执行浮点除法,结果是 2.5。
- 如何避免整数溢出?
查看答案
- 使用
long long代替int存储大数 - 在运算前进行类型转换:
(long long)a * b - 使用取模运算控制范围
- 注意中间结果也可能溢出
易错点
⚠️ 注意:
- int 范围约 ±21 亿
- 大数运算要用 long long
- 浮点数比较不能用 ==
- 注意类型转换