C 语言是大小写敏感的
最重要的一点是:C 语言是一门大小写敏感的语言。
这意味着,编译器会区分大写字母和小写字母,在 C 语言看来,Hello、hello、HELLO 是三个完全不同的名字。
关键字 - 必须小写
C 语言中预先定义好的、具有特殊含义的单词,称为关键字,这些关键字必须全部使用小写字母。
如果你试图使用大写字母来写一个关键字,编译器会将其识别为一个普通的标识符(比如一个变量名),并因为缺少定义或使用不当而报错。
示例:
// 正确的写法
int main() {
int age = 25;
return 0;
}
// 错误的写法
// INT main() { // 错误:'INT' 不是 C 语言的关键字
// INT age = 25; // 错误:'INT' 被当作一个未声明的变量名
// return 0;
// }
// 另一个错误示例
void MyFunction() { // 函数名可以大写,但 if 关键字不行
if (age > 20) { // 正确
// ...
}
// IF (age > 20) { // 错误:'IF' 不是关键字,编译器会报错
// ...
// }
}
常见关键字列表(全部为小写):
auto |
break |
case |
char |
const |
|---|---|---|---|---|
continue |
default |
do |
double |
else |
enum |
extern |
float |
for |
goto |
if |
int |
long |
register |
return |
short |
signed |
sizeof |
static |
struct |
switch |
typedef |
union |
unsigned |
void |
volatile |
while |
_Bool |
_Complex |
_Imaginary |
标识符 - 大小写有约定
标识符是程序员自己给变量、函数、数组、结构体等起的名字,C 语言允许在标识符中使用大小写字母、数字和下划线 _。
虽然 C 语言语法上允许混合大小写,但在实际开发中,为了代码的可读性和团队协作,遵循统一的命名约定至关重要。
1 变量和函数命名约定
虽然没有强制性的语法规定,但业界普遍遵循以下几种风格:
a) 小写字母 + 下划线(Snake Case / 蛇形命名法)
这是 C 语言和许多其他语言中最传统、最常见的风格。
- 变量:
my_variable,user_age,max_value - 函数:
calculate_sum,print_message,get_user_input
#include <stdio.h>
int main() {
int student_count = 30;
float average_score = 85.5;
printf("Student count: %d\n", student_count);
printf("Average score: %.2f\n", average_score);
return 0;
}
b) 小驼峰命名法
每个单词的首字母小写,后续单词首字母大写,不使用下划线。
- 变量:
myVariable,userAge,maxValue - 函数:
calculateSum,printMessage,getUserInput
#include <stdio.h>
int main() {
int studentCount = 30;
float averageScore = 85.5;
printf("Student count: %d\n", studentCount);
printf("Average score: %.2f\n", averageScore);
return 0;
}
c) 大驼峰命名法
每个单词的首字母都大写,不使用下划线,这种风格在 C 语言中通常用于宏定义、枚举类型 或 结构体/联合体标签。
- 宏定义:
MAX_SIZE,PI - 枚举:
enum Color { RED, GREEN, BLUE }; - 结构体标签:
struct Student { ... };
#include <stdio.h>
#define MAX_STUDENTS 100 // 宏定义通常用大写
struct Student { // 结构体标签通常用大驼峰
int id;
char name[50];
};
int main() {
struct Student s1; // 使用结构体时,变量名通常用小驼峰或下划线
s1.id = 101;
printf("Student ID: %d\n", s1.id);
return 0;
}
重要提示:无论你选择哪种风格,在一个项目中必须保持一致,混合使用多种风格会让代码变得难以维护。
预处理器指令 - 通常大写
预处理器指令(如 #include, #define)本身不区分大小写,但行业惯例是全部使用大写字母。
这样做是为了将它们与普通的 C 代码和关键字区分开来,提高代码的可读性。
// 正确且常见的写法 #include <stdio.h> #define PI 3.14159 // 语法上可行,但强烈不推荐 #include <stdio.h> // 没问题 #define pi 3.14159 // 没问题,但看起来像是一个变量,容易混淆
字符字面量 - 'a' 和 'A' 是不同的
单个字符用单引号括起来,称为字符字面量,它们的大小写代表不同的 ASCII 码值。
#include <stdio.h>
int main() {
char lowercase_a = 'a';
char uppercase_a = 'A';
printf("The ASCII value of 'a' is: %d\n", lowercase_a); // 输出 97
printf("The ASCII value of 'A' is: %d\n", uppercase_a); // 输出 65
// 比较大小写
if (lowercase_a != uppercase_a) {
printf("'a' and 'A' are different characters.\n"); // 这行会被执行
}
return 0;
}
总结与实践建议
| 元素 | 大小写规则 | 常见风格/示例 |
|---|---|---|
| 关键字 | 必须小写 | int, if, for, return |
| 标识符 | 大小写敏感,可自由组合 | 变量/函数: my_var (蛇形), myVar (小驼峰)宏/枚举/结构体: MAX_SIZE, struct Student (大驼峰) |
| 预处理器指令 | 语法不敏感,但惯例大写 | #include, #define |
| 字符字面量 | 大小写敏感 | 'a' (97) 和 'A' (65) 是不同的 |
最佳实践:
- 严格遵守关键字小写:这是语法要求,没有商量余地。
- 选择并坚持一种命名风格:对于一个项目,要么全用蛇形,要么全用小驼峰,不要混用,这是专业性的体现。
- 用大写区分宏:
#define宏定义使用全大写,能让你一眼就认出它是一个宏,而不是一个变量或函数。 - 利用大小写区分类型:比如用大驼峰命名结构体/联合体/枚举类型,用小驼峰命名它们的变量实例,有助于理解代码结构。
通过遵循这些规则,你的 C 语言代码将更加清晰、规范、易于阅读和维护。
