基础语法

C语言的语法规则

C语言有一套清晰的语法规则,就像自然语言的语法一样。东巴文(db-w.cn) 将带你系统学习C语言的基础语法,为后续学习打下坚实基础。

💡 东巴文观点:语法是编程语言的基础,就像建筑的地基。地基打得牢,房子才能建得高。

关键字

什么是关键字?

关键字是C语言预先定义的、有特殊含义的单词,不能用作变量名或其他标识符。

C语言关键字列表

东巴文关键字分类表

数据类型关键字(12个)

关键字 含义 东巴文示例
char 字符类型 char c = 'A';
short 短整型 short s = 100;
int 整型 int i = 42;
long 长整型 long l = 100000L;
float 单精度浮点 float f = 3.14f;
double 双精度浮点 double d = 3.14159;
signed 有符号 signed int si = -10;
unsigned 无符号 unsigned int ui = 10;
struct 结构体 struct Point {int x; int y;};
union 联合体 union Data {int i; float f;};
enum 枚举 enum Color {RED, GREEN, BLUE};
void 无类型 void func();

控制语句关键字(12个)

关键字 含义 东巴文示例
if 如果 if (x > 0) {...}
else 否则 if (x > 0) {...} else {...}
switch 开关 switch (x) {...}
case 情况 case 1: ...
default 默认 default: ...
for 循环 for (int i = 0; i < 10; i++)
while 循环 while (x > 0) {...}
do 循环 do {...} while (x > 0);
break 跳出 break;
continue 继续 continue;
goto 跳转 goto label;
return 返回 return 0;

存储类型关键字(5个)

关键字 含义 东巴文说明
auto 自动变量 默认,通常省略
extern 外部变量 声明外部定义的变量
register 寄存器变量 建议存储在寄存器
static 静态变量 延长生命周期
typedef 类型定义 给类型起别名

其他关键字(3个)

关键字 含义 东巴文示例
const 常量 const int MAX = 100;
sizeof 大小 sizeof(int)
volatile 易变 volatile int flag;

东巴文提示:C语言只有32个关键字(C99标准),非常简洁。

标识符

什么是标识符?

标识符是用来命名变量、函数、数组、类型等的名字。

命名规则

东巴文命名规则

✅ 合法的标识符

int age;           // 字母开头
int student_name;  // 包含下划线
int value1;        // 包含数字
int _count;        // 下划线开头
int MAX_SIZE;      // 全大写(常量)

❌ 非法的标识符

int 2nd_place;     // 数字开头
int my-var;        // 包含连字符
int int;           // 使用关键字
int my var;        // 包含空格
int @email;        // 包含特殊字符

命名规范

东巴文命名建议

1. 小驼峰命名法(变量、函数)

int studentAge;
void calculateTotal();

2. 大驼峰命名法(类型)

struct StudentInfo {
    char name[50];
    int age;
};
typedef struct StudentInfo StudentInfo;

3. 全大写+下划线(常量)

#define MAX_SIZE 100
const int BUFFER_SIZE = 1024;

4. 有意义的名称

// ✅ 好的命名
int studentCount;
float averageScore;
char userName[50];

// ❌ 不好的命名
int a;
float b;
char c[50];

东巴文金句:好的命名是代码自文档化的第一步。

注释

单行注释

// 这是单行注释
int age = 25;  // 这也是单行注释

多行注释

/*
 * 这是多行注释
 * 可以跨越多行
 * 用于详细说明
 */
int calculateSum(int a, int b) {
    return a + b;
}

注释的最佳实践

东巴文注释原则

✅ 好的注释

// 计算圆的面积
// 参数:radius - 圆的半径
// 返回:圆的面积
float calculateArea(float radius) {
    return 3.14159 * radius * radius;
}

// TODO: 需要添加错误处理
// FIXME: 这里可能有内存泄漏

❌ 不好的注释

int age = 25;  // 设置age为25(废话注释)

// i是循环变量(显而易见)
for (int i = 0; i < 10; i++) {
    printf("%d\n", i);
}

东巴文提示:注释应该解释"为什么",而不是"是什么"。

语句

什么是语句?

语句是C程序的基本执行单位,以分号 ; 结尾。

语句类型

1. 表达式语句

x = 10;          // 赋值语句
y = x + 5;       // 算术表达式
printf("Hello"); // 函数调用语句

2. 复合语句(代码块)

{
    int x = 10;
    int y = 20;
    printf("Sum: %d\n", x + y);
}

3. 控制语句

if (x > 0) {
    printf("Positive\n");
}

for (int i = 0; i < 10; i++) {
    printf("%d\n", i);
}

4. 空语句

;  // 什么都不做

东巴文提示:空语句有时用于占位,但要小心误用。

代码块

什么是代码块?

代码块是用花括号 {} 括起来的一组语句。

代码块的作用

1. 定义作用域

int main() {
    int x = 10;  // x的作用域开始
    
    {
        int y = 20;  // y的作用域开始
        printf("x=%d, y=%d\n", x, y);
    }  // y的作用域结束
    
    // printf("y=%d\n", y);  // 错误:y不可见
    printf("x=%d\n", x);     // 正确:x可见
    
    return 0;
}  // x的作用域结束

2. 组织代码

if (score >= 60) {
    // 代码块组织相关语句
    printf("恭喜!\n");
    printf("你通过了考试。\n");
    passed_count++;
}

分隔符

C语言的分隔符

分隔符 用途 东巴文示例
; 语句结束 int x = 10;
, 分隔列表项 int a, b, c;
() 函数参数、表达式 func(a, b)
{} 代码块 { int x = 10; }
[] 数组下标 arr[0]
. 结构体成员 student.name
-> 指针成员 ptr->name

运算符

运算符分类

东巴文运算符大全

算术运算符

运算符 含义 示例 东巴文说明
+ 加法 5 + 3 → 8 基本运算
- 减法 5 - 3 → 2 基本运算
* 乘法 5 * 3 → 15 基本运算
/ 除法 5 / 3 → 1 整数除法取整
% 取模 5 % 3 → 2 余数运算

关系运算符

运算符 含义 示例 东巴文说明
== 等于 5 == 5 → 1 注意双等号
!= 不等于 5 != 3 → 1 逻辑判断
< 小于 5 < 3 → 0 逻辑判断
> 大于 5 > 3 → 1 逻辑判断
<= 小于等于 5 <= 5 → 1 逻辑判断
>= 大于等于 5 >= 3 → 1 逻辑判断

逻辑运算符

运算符 含义 示例 东巴文说明
&& 逻辑与 1 && 0 → 0 两者都真才真
|| 逻辑或 1 || 0 → 1 有一真就真
! 逻辑非 !1 → 0 真变假,假变真

赋值运算符

运算符 含义 示例 等价形式
= 赋值 x = 5 -
+= 加赋值 x += 3 x = x + 3
-= 减赋值 x -= 3 x = x - 3
*= 乘赋值 x *= 3 x = x * 3
/= 除赋值 x /= 3 x = x / 3
%= 模赋值 x %= 3 x = x % 3

自增自减运算符

运算符 含义 示例 东巴文说明
++ 自增 x++++x 前缀和后缀不同
-- 自减 x----x 前缀和后缀不同

前缀 vs 后缀

int x = 5;
int a = ++x;  // a=6, x=6(先加后用)
int y = 5;
int b = y++;  // b=5, y=6(先用后加)

位运算符

运算符 含义 示例 东巴文说明
& 按位与 5 & 3 → 1 位运算
| 按位或 5 | 3 → 7 位运算
^ 按位异或 5 ^ 3 → 6 位运算
~ 按位取反 ~5 位运算
<< 左移 5 << 1 → 10 相当于乘2
>> 右移 5 >> 1 → 2 相当于除2

条件运算符

// 三目运算符
int max = (a > b) ? a : b;  // 如果a>b,max=a,否则max=b

逗号运算符

int x = (a = 3, b = 5, a + b);  // x = 8

运算符优先级

东巴文优先级表(从高到低):

优先级 运算符 东巴文记忆口诀
1 () [] -> . 括号成员第一
2 ! ~ ++ -- sizeof 单目运算第二
3 * / % 乘除模第三
4 + - 加减第四
5 << >> 移位第五
6 < <= > >= 关系第六
7 == != 等于不等第七
8 & 位与第八
9 ^ 位异或第九
10 | 位或第十
11 && 逻辑与十一
12 || 逻辑或十二
13 ?: 条件十三
14 = += -= 赋值十四
15 , 逗号最后

东巴文建议:不确定优先级时,使用括号明确表达。

// 不确定时加括号
int result = (a + b) * (c + d);  // 清晰明了

表达式

什么是表达式?

表达式是由运算符和操作数组成的、能计算出值的式子。

表达式示例

// 简单表达式
42
x
x + 5

// 复杂表达式
(a + b) * (c - d) / e

// 函数调用表达式
printf("Hello")

// 赋值表达式
x = 10

// 逗号表达式
(x = 5, y = 10, x + y)

常见语法错误

错误1:缺少分号

// ❌ 错误
int x = 10
printf("%d\n", x);

// ✅ 正确
int x = 10;
printf("%d\n", x);

错误2:使用中文标点

// ❌ 错误
int x = 10// 中文分号
printf"x=%d\n", x);  // 中文括号和分号

// ✅ 正确
int x = 10;  // 英文分号
printf("x=%d\n", x);  // 英文括号和分号

错误3:括号不匹配

// ❌ 错误
if (x > 0 {
    printf("Positive\n");
}

// ✅ 正确
if (x > 0) {
    printf("Positive\n");
}

错误4:混淆 = 和 ==

// ❌ 错误(逻辑错误)
if (x = 5) {  // 这是赋值,不是比较!
    printf("x is 5\n");
}

// ✅ 正确
if (x == 5) {  // 这是比较
    printf("x is 5\n");
}

东巴文提示:这是C语言最常见的错误之一!

东巴文最佳实践

代码风格

1. 缩进统一

// ✅ 推荐:4个空格
int main() {
    if (x > 0) {
        printf("Positive\n");
    }
    return 0;
}

2. 空格使用

// ✅ 推荐
int x = 10;
if (x > 0) {
    printf("x = %d\n", x);
}

// ❌ 不推荐
int x=10;
if(x>0){
    printf("x=%d\n",x);
}

3. 每行一个语句

// ✅ 推荐
int x = 10;
int y = 20;

// ❌ 不推荐
int x = 10; int y = 20;

命名规范总结

东巴文命名规范

类型 命名风格 示例
变量 小驼峰 studentAge
函数 小驼峰 calculateSum
常量 全大写+下划线 MAX_SIZE
类型 大驼峰 StudentInfo
全大写+下划线 BUFFER_SIZE

东巴文验证清单

完成本章学习后,请确认:

  • 记住C语言的32个关键字
  • 掌握标识符的命名规则
  • 会使用单行和多行注释
  • 理解语句和代码块的概念
  • 掌握各种运算符的使用
  • 了解运算符优先级
  • 能避免常见的语法错误
  • 遵循良好的代码风格

下一步学习

掌握基础语法后,你可以继续学习:

如果遇到问题,欢迎访问 东巴文(db-w.cn) 获取帮助!


东巴文(db-w.cn) - 让编程学习更简单

📚 东巴文语法提示:语法是编程的基础,但不要死记硬背。多写代码,多练习,语法自然会熟练。在 db-w.cn,我们会通过大量实例帮你掌握C语言语法!