变量与常量 & 起名规则
GESP三级 变量考察点
一、标识符命名规则(通用:变量/数组/函数)
1. 核心规则
合法标识符只能由英文字母(大小写)、数字、下划线_组成,且不能以数字开头,不能是C++关键字
- ✅ 合法:
five_star、_fiveStar、_1、__、cin、endl、printf - ❌ 非法:
five-Star(减号)、1a(数字开头)、X.cpp(点)、X#cpp(井号)、int(关键字)
2. 关键字与非关键字区分
- 关键字:
int、for、do、if、else、true、false、char、double、bool - (非关键字,不推荐):
cin、cout、printf、scanf、endl、abs、swap(这些是库函数/对象,不是语言关键字)
3. 其他规则
- C++严格区分大小写:
first和First是两个不同变量
二、变量与常量基础
1. 基本数据类型对照表
| 类型 | 变量 | 占用字节 | 常量示例 |
|---|---|---|---|
| 整数 | int / long long | 4 / 8 | -1、0、123 |
| 浮点数 | float / double | 4 / 8 | -1.0、0.0、12.345 |
| 字符 | char | 1 | '3'、'#'、'\n' |
| 布尔 | bool | 1 | true、false |
| 字符串 | - | - | "hello"、""(空字符串) |
2. 常量进制前缀(必考)
| 前缀 | 进制 | 示例 |
|---|---|---|
0b | 二进制 | 0b0、0b1010 |
0 | 八进制 | 03、0123 |
0x | 十六进制 | 0x3、0xAF |
- 易错:
cout << 012 + 1输出11,不是13,注意到12前面有个0,不能正常当12用就行,考过一次。
3. 常量易错点
- 字符常量:单引号只能包单个字符,转义符
\n算1个字符;不存在空字符''
注意单引号里括多个字符问题,比如cout<<'hello';语法也是通过的,能运行,但无法正常输出hello,会输出一个数字。 字符串常量:双引号包裹,可以为空
"";奇数对双引号都是合法的,偶数对报错- ✅
"""hello"""(3对) - ❌
""hello""(2对)
- ✅
- 默认类型:整数默认都是
int,浮点数默认都是double
三、变量核心特性
- 必须先定义后使用,定义时指定类型,运行中类型永久固定
- 类型转换是临时转换,只改变本次运算的值,变量本身类型不变
混合运算自动类型提升:
int + long long→long longfloat + double→doubleint + double→double
四、类型转换
- C++支持合法的类型转换,例如需要一个整数的地方写个字符一般也可以,因为字符可以变成整数。
| 转换场景 | 规则 | 示例 |
|---|---|---|
| 整数→浮点数 | 无缝转换,小数补0 | double d = 2; → d=2.0 |
| 浮点数→整数 | 去尾法,直接丢小数,不四舍五入 | int n = 1.9; → n=1 |
| 整数↔字符 | 基于ASCII码:'0'=48、'A'=65、'a'=97 | char c=97; → c='a' |
| 布尔→整数 | true=1,false=0 | int x=true; → x=1 |
| 整数→布尔 | 0→false,非0→true | bool b=-5; → b=true |
| 浮点数→布尔 | 0.0→false,非0.0→true | bool b=3.14; → b=true |
| 字符串→其他 | 双引号字符串无法转换为其他类型 | "1"*2 编译报错 |
| 字符→其他 | 单引号字符可以转换为整数 | '1'*2=98 |
强制类型转换
✅ 正确语法:
(类型)数据或类型(数据)- 例:
(int)'A'、int('A')
- 例:
❌ 错误语法:省略括号直接写
类型 数据- 例:
int 'A'编译报错
- 例:
五、高频考点
| 说法 | 对错 | 说明 |
|---|---|---|
for不能做变量名 | ✅ | 是C++关键字 |
cin不能做变量名 | ❌ | 是iostream对象,不是关键字 |
| 变量名可以以下划线开头 | ✅ | _、_1都是合法的 |
空字符串""不存在 | ❌ | 双引号可以为空 |
"""hello"""是合法字符串 | ✅ | 奇数对双引号合法 |
| 浮点数转int会四舍五入 | ❌ | 直接截断小数部分 |
int 'A'是合法强制转换 | ❌ | 必须加括号:int('A') |
"1"*2会编译报错 | ✅ | 字符串不能和整数运算 |
'1'*2结果是98 | ✅ | '1'的ASCII码是49 |
评论已关闭