三级低频冷门考点
GESP三级 零散考点总结
一、enum(枚举)
核心知识点
定义:
enum 枚举名 { 枚举常量1, 枚举常量2, ... };- 例:
enum Color { RED, GREEN, BLUE };
- 例:
枚举常量的默认值:从0开始依次递增
- 上例中:
RED=0,GREEN=1,BLUE=2
- 上例中:
类型特性:
- 在C++中,枚举常量的类型默认与int兼容(可以隐式转换为int)
- 但严格来说,枚举是独立的类型,不过在旧标准或常见考题中,可认为其底层是int
判断题考点:
- 题目:“RED 的类型是 int” → 对(默认情况下,枚举常量可当作int处理)
二、extern(变量声明关键字)
核心知识点
- 作用:声明变量/函数在其他文件或作用域中已定义,告诉编译器“该变量已存在,去别处找定义”
声明 vs 定义:
- 定义:分配内存空间(如
int a;) - 声明:不分配内存,仅告知存在(如
extern int a;)
- 定义:分配内存空间(如
核心规则:
- 同一个作用域内,变量的定义只能有1次,但
extern声明可以有多次
- 同一个作用域内,变量的定义只能有1次,但
判断题考点:
- 题目:“extern 声明的变量可以多次定义” → 错(定义只能1次,声明可多次)
三、sizeof(运算符,计算字节数)
核心知识点
- 作用:计算数据类型或变量占用的字节数
例:
int arr[] = {5,10,15,20,25,30};sizeof(arr)= 6×4 = 24字节(int占4字节)sizeof(arr[0])= 4字节
sizeof(int)= 4字节
五、三目运算符(?:)
核心知识点
语法:
条件 ? 表达式1 : 表达式2- 等价于:
if(条件) 表达式1; else 表达式2; - 例如
a = (b > c ? b : c),即if( b > c) a = b; else a = c;
- 等价于:
真题考察:
题目1:
arr[3 > 2 ? 1 : 2]3>2为真,取arr[1]
题目2:
a > b ? a : b = 10;- 语法不合法:该表达式是左值,无法被赋值
六、宏定义(#define)
核心知识点
- 本质:纯文本替换,不进行类型检查
常见错误:
- 宏定义参数若不加括号,会因运算符优先级导致错误
例:
#define SQUARE(x) x * xSQUARE(2+3)会被替换为2+3*2+3 = 2+6+3 = 11(不是25)
安全写法:给参数和整体都加括号
修正:
#define SQUARE(x) ((x)*(x))
七、switch
- switch:根据 switch() 小括号里表达式的值,跳转到对应 case
- 考点:每个 case 通常要加 break,不加 break 会穿透执行,从当前 case 一直往下运行所有后续代码。
示例代码(带穿透演示)
#include <iostream>
using namespace std;
int main() {
int x = 2;
switch (x) {
case 1:
cout << "一" << endl;
break;
case 2:
cout << "二" << endl; // 会执行
// 这里没写 break,发生穿透
case 3:
cout << "三" << endl; // 也会执行
break;
default: // 上面case全部失败时保底执行,相当于else
cout << "其他" << endl;
}
return 0;
}运行结果
二
三关键说明
- x=2 匹配 case2,执行输出 二
- 因为没有 break,继续穿透执行 case3,输出 三
- 遇到 break 才会跳出整个 switch
八、unsigned类型
核心知识点
- 概念:无符号类型,一般在声明语句中作为类型前缀,如
unsigned int, unsigned double - 考点:unsigned修饰的变量只存正数,例如unsigned int,32位均用来存正数,实际存值范围
0 ~ 2^32-1。 - 难点:unsigned int a = -1; 无符号类型存负数不会取绝对值,正常存储-1的二进制,但读取时当正数,不做补码的-1取反流程,-1的二进制是一大堆的1,会读取成一个极大正数。
评论已关闭