🔷 第二章 C++语言基础
📄 一句话概括

标识符就是你给变量、函数、类起的名字。硬规则四条:只能由字母、数字、下划线组成;不能用数字开头;不能是关键字(int、if、return 这些);区分大小写(age 和 Age 是两个不同的名字)。软规则一条:见名知意——编译器不管你怎么起,但三个月后的你会感谢自己。

一、硬规则(违反了直接报错)

规则 合法 非法 报错大意
只能用字母、数字、下划线 age stu2 _count max_value a-b a+b a.b 把名字切成了两半,报"未声明"
不能数字开头 stu2 n1 2age 1st invalid suffix/语法错误
不能是关键字 count value int if for return const true 语法错误
不能有空格 totalPrice my age 被当成两个名字
区分大小写 age、Age 各是各的 — 不会报错,但会认错人

常用的关键字(背不下来没关系,写多了自然记住):

int  double  float  char  bool  void  short  long  unsigned
if  else  switch  case  for  while  do  break  continue  return
const  true  false  class  struct  namespace  using  public  private
📝 一个实用技巧

Dev-C++ 会把关键字显示成高亮颜色(通常是蓝色/加粗)。如果你给变量起了关键字名,一眼就能看出来——颜色不对,名字就有问题。

二、软规则(风格,编译器不管但人管)

建议 差 好
见名知意 a x1 tp age totalPrice studentCount
小驼峰(变量/函数) totalprice totalPrice
下划线(另一种风格) totalPrice total_price(两种风格选一种,别混用)
常量全大写 pi maxSize PI MAX_SIZE
避免单字母 d(日期?距离?) 只有循环变量 i j k 是惯例允许的
避开易混字符 l(像 1)、O(像 0) len、count

一条真实教训:程序里 l 和 1、O 和 0 混在一起,是肉眼排错的地狱。起名时躲开这两个字母,比事后 debug 便宜得多。

三、动手 Demo:把非法名字一个个试过去

新建 name.cpp,一次只改一处,每轮 Ctrl+S → F11,记下报错原话:

#include <iostream>
using namespace std;

int main() {
    int 2age = 18;          // 第一轮:数字开头
    // int my age = 18;     // 第二轮:中间有空格
    // int int = 18;        // 第三轮:用关键字
    // int a-b = 18;        // 第四轮:含减号
    return 0;
}

看到什么算成功:四轮都能看懂报错,并说出"违反了哪条规则"。

特别注意第四轮:int a-b = 18; 的报错可能很奇怪(说 b 未声明之类)——因为编译器把它理解成 int a - b = 18,即"用变量 b 去减"。这类报错最有迷惑性,记住结论:名字里不能有运算符。

30 秒实验:写 int age = 18; int Age = 20; 然后分别输出——两个变量互不影响。这就是"区分大小写"的实证。

四、常见误区

  1. "变量名可以随便起,反正是给机器看的"——机器看类型,人看名字。代码 90% 的时间是被人读的,只有 10% 的时间被执行
  2. "_count 以下划线开头,最安全"——不一定。下划线开头 + 大写的名字(如 _Count)是保留给编译器和库的,自己别用;单个下划线开头(_count)能用但风格不佳
  3. "中文名字也能用吧"——部分编译器(含 Dev-C++ 的 MinGW)允许,但换编译器、换平台就可能出事,而且输入法切换容易带进全角字符。一律用英文
  4. "名字越短越好"——i、j、k 只在"三五行的循环"里合理。跨几十行的变量,名字必须能自解释
自测四问(点开对答案) 1. 标识符的硬规则有哪几条?——只能用**字母/数字/下划线**;**不能数字开头**;**不能是关键字**;**区分大小写**。 2. `_count`、`stu2`、`2stu` 哪几个合法?——`_count` 和 `stu2` 合法;`2stu` 非法(数字开头)。 3. `age` 和 `Age` 是同一个变量吗?——**不是**,C++ 区分大小写。 4. 命名为什么要避开 `l` 和 `O`?——因为它们和数字 `1`、`0` 长得太像,容易看错、引发排错困难。

相关笔记