C 语言_基础语法全解析_深度细化版

发布于:2025-05-18 ⋅ 阅读:(16) ⋅ 点赞:(0)

一、C 语言基本结构

1.1 程序组成部分

一个完整的 C 程序由以下部分组成:

  1. 预处理指令:以#开头,在编译前处理

    #include <stdio.h>  // 引入标准库
    #define PI 3.14159  // 定义常量
    
  2. 全局变量声明:在所有函数外部定义的变量

    int globalVar = 10;  // 全局变量
    
  3. 函数定义:程序的基本模块

    int add(int a, int b) {  // 函数定义
        return a + b;
    }
    
  4. 主函数:程序入口点

    int main() {  // 主函数
        // 程序执行代码
        return 0;
    }
    
1.2 编译与执行流程

C 程序的生命周期:

  1. 编辑:编写.c源文件
  2. 预处理:处理#指令,生成.i文件
  3. 编译:将.i文件转换为汇编代码.s
  4. 汇编:将汇编代码转换为目标代码.o
  5. 链接:将目标代码与库文件链接,生成可执行文件.exe

二、数据类型与变量

2.1 基本数据类型
类型 描述 范围示例
char 单字节字符 -128 ~ 127 或 0 ~ 255
short 短整型 -32,768 ~ 32,767
int 整型 -2,147,483,648 ~ 2,147,483,647
long 长整型 至少与int相同范围
float 单精度浮点数 6-7 位有效数字
double 双精度浮点数 15-16 位有效数字
void 无类型 用于函数返回值或指针
2.2 变量存储类

C 语言有四种存储类:

  1. auto:默认存储类,局部变量

    auto int a = 10;  // 等价于 int a = 10;
    
  2. static:静态变量,延长生命周期

    void func() {
        static int count = 0;  // 仅初始化一次
        count++;
    }
    
  3. extern:声明外部变量

    extern int sharedVar;  // 声明在其他文件中定义的变量
    
  4. register:建议编译器将变量存储在寄存器中

    register int speed;  // 用于高频访问的变量
    

三、运算符深度解析(含优先级)

3.1 算术运算符
运算符 描述 示例 结果
+ 加法 5 + 3 8
- 减法 5 - 3 2
* 乘法 5 * 3 15
/ 除法 5 / 3 1
% 取模(取余) 5 % 3 2
++ 自增 a=5; a++ a=6
-- 自减 a=5; a-- a=4

注意事项

  • 整数除法会截断小数部分
  • 自增 / 自减运算符的前置和后置形式有区别:
    int a = 5;
    printf("%d", a++);  // 输出5,先使用后自增
    printf("%d", ++a);  // 输出7,先自增后使用
    
3.2 关系运算符
运算符 描述 示例 结果
== 等于 5 == 3 0(假)
!= 不等于 5 != 3 1(真)
> 大于 5 > 3 1(真)
< 小于 5 < 3 0(假)
>= 大于等于 5 >= 3 1(真)
<= 小于等于 5 <= 3 0(假)
3.3 逻辑运算符
运算符 描述 示例 结果
&& 逻辑与 (5 > 3) && (4 > 2) 1(真)
` ` 逻辑或 `(5 < 3) (4 > 2)` 1(真)
! 逻辑非 !(5 > 3) 0(假)

逻辑短路特性

// 如果第一个条件为假,第二个条件不会执行
if (0 && (1/0 == 0)) {  // 不会触发除零错误
    printf("不会执行");
}

// 如果第一个条件为真,第二个条件不会执行
if (1 || (1/0 == 0)) {  // 不会触发除零错误
    printf("会执行");
}
3.4 位运算符
运算符 描述 示例 二进制解释 结果
& 按位与 5 & 3 0101 & 0011 0001 (1)
` ` 按位或 `5 3` `0101 0011` 0111 (7)
^ 按位异或 5 ^ 3 0101 ^ 0011 0110 (6)
~ 按位取反 ~5 ~0101 1010 (-6)
<< 左移 5 << 2 0101 << 2 010100 (20)
>> 右移 5 >> 1 0101 >> 1 0010 (2)
3.5 赋值运算符
运算符 等价形式 示例 结果
= a = 5 a=5
+= a = a + ... a = 5; a += 3 a=8
-= a = a - ... a = 5; a -= 3 a=2
*= a = a * ... a = 5; a *= 3 a=15
/= a = a / ... a = 6; a /= 3 a=2
%= a = a % ... a = 5; a %= 3 a=2
3.6 条件运算符(三元运算符)

语法条件 ? 表达式1 : 表达式2

示例

int a = 5, b = 3;
int max = (a > b) ? a : b;  // max = 5
3.7 运算符优先级表
优先级 运算符类型 具体运算符 结合性
1 后缀运算符

网站公告

今日签到

点亮在社区的每一天
去签到