1. 引言
C语言是一种通用的、过程式的编程语言,广泛应用于系统编程、嵌入式开发和高性能计算等领域。C语言的语法简洁、功能强大,是学习其他高级编程语言的基础。本文档将详细介绍C语言的基本语法,包括变量、数据类型、运算符和控制结构。
2. 变量
2.1 变量的定义
变量是程序中用于存储数据的容器。在C语言中,变量必须先定义后使用。定义变量时需要指定变量的数据类型和名称。
int age; // 定义一个整型变量age
float salary; // 定义一个浮点型变量salary
char grade; // 定义一个字符型变量grade
2.2 变量的命名规则
-
变量名只能由字母、数字和下划线组成。
-
变量名不能以数字开头。
-
变量名不能是C语言的关键字(如
int
、float
、if
等)。 -
变量名区分大小写。
示例:
int age; // 合法
int _age; // 合法
int 1age; // 非法,不能以数字开头
int float; // 非法,float是关键字
2.3 变量的作用域
变量的作用域是指变量在程序中可见的范围。C语言中的变量作用域分为以下几种:
-
局部变量:在函数或代码块内部定义的变量,作用域仅限于该函数或代码块。
-
全局变量:在函数外部定义的变量,作用域为整个程序。
示例:
#include <stdio.h>
int globalVar = 10; // 全局变量
void func() {
int localVar = 20; // 局部变量
printf("Global Variable: %d\n", globalVar);
printf("Local Variable: %d\n", localVar);
}
int main() {
func();
// printf("%d\n", localVar); // 错误,localVar在此处不可见
return 0;
}
2.4 变量的生命周期
变量的生命周期是指变量从创建到销毁的时间段。
-
局部变量:生命周期从进入函数或代码块开始,到退出函数或代码块结束。
-
全局变量:生命周期从程序开始运行到程序结束。
3. 数据类型
3.1 基本数据类型
C语言中的基本数据类型包括:
-
整型:
int
、short
、long
、long long
-
浮点型:
float
、double
、long double
-
字符型:
char
示例:
int a = 10; // 整型
short b = 20; // 短整型
long c = 100000L; // 长整型
float d = 3.14f; // 单精度浮点型
double e = 3.1415926; // 双精度浮点型
char f = 'A'; // 字符型
3.2 派生数据类型
C语言中的派生数据类型包括:
-
数组:存储相同类型的数据。
-
指针:存储变量的内存地址。
-
结构体:存储不同类型的数据。
-
联合体:共享内存空间的不同类型数据。
示例:
int arr[5] = {1, 2, 3, 4, 5}; // 数组
int *ptr = &arr[0]; // 指针
struct Point { int x; int y; }; // 结构体
union Data { int i; float f; }; // 联合体
3.3 类型修饰符
C语言中的类型修饰符用于改变变量的存储方式或行为:
-
signed:表示有符号数(默认)。
-
unsigned:表示无符号数。
-
short:表示短整型。
-
long:表示长整型。
示例:
unsigned int a = 10; // 无符号整型
signed char b = -10; // 有符号字符型
long double c = 3.14; // 长双精度浮点型
3.4 类型转换
C语言中的类型转换分为隐式转换和显式转换:
-
隐式转换:由编译器自动完成。
-
显式转换:通过强制类型转换运算符
(type)
完成。
示例:
int a = 10;
float b = 3.14;
float c = a + b; // 隐式转换,a被转换为float
int d = (int)b; // 显式转换,b被转换为int
4. 运算符
4.1 算术运算符
算术运算符用于执行基本的数学运算:
-
+
:加法 -
-
:减法 -
*
:乘法 -
/
:除法 -
%
:取模(求余数)
示例:
int a = 10, b = 3;
int sum = a + b; // 13
int diff = a - b; // 7
int prod = a * b; // 30
int quot = a / b; // 3
int rem = a % b; // 1
4.2 关系运算符
关系运算符用于比较两个值的大小:
-
==
:等于 -
!=
:不等于 -
>
:大于 -
<
:小于 -
>=
:大于等于 -
<=
:小于等于
示例:
int a = 10, b = 20;
if (a == b) { /* ... */ } // false
if (a < b) { /* ... */ } // true
4.3 逻辑运算符
逻辑运算符用于组合多个条件:
-
&&
:逻辑与 -
||
:逻辑或 -
!
:逻辑非
示例:
int a = 10, b = 20;
if (a > 0 && b > 0) { /* ... */ } // true
if (a > 0 || b < 0) { /* ... */ } // true
if (!(a == b)) { /* ... */ } // true
4.4 位运算符
位运算符用于对二进制位进行操作:
-
&
:按位与 -
|
:按位或 -
^
:按位异或 -
~
:按位取反 -
<<
:左移 -
>>
:右移
示例:
int a = 5, b = 3;
int and = a & b; // 1 (0101 & 0011 = 0001)
int or = a | b; // 7 (0101 | 0011 = 0111)
int xor = a ^ b; // 6 (0101 ^ 0011 = 0110)
int not = ~a; // -6 (按位取反)
int leftShift = a << 1; // 10 (0101 << 1 = 1010)
int rightShift = a >> 1;// 2 (0101 >> 1 = 0010)
4.5 赋值运算符
赋值运算符用于给变量赋值:
-
=
:简单赋值 -
+=
、-=
、*=
、/=
、%=
:复合赋值
示例:
int a = 10;
a += 5; // a = a + 5 → 15
a *= 2; // a = a * 2 → 30
4.6 其他运算符
-
条件运算符:
? :
-
逗号运算符:
,
-
sizeof运算符:
sizeof
示例:
int a = 10, b = 20;
int max = (a > b) ? a : b; // 条件运算符
int c = (a++, b++); // 逗号运算符
int size = sizeof(a); // sizeof运算符
5. 控制结构
5.1 条件语句(if、else if、else)
条件语句用于根据条件执行不同的代码块。
语法:
if (condition1) {
// 条件1为真时执行
} else if (condition2) {
// 条件2为真时执行
} else {
// 其他情况执行
}
示例:
int score = 85;
if (score >= 90) {
printf("A\n");
} else if (score >= 80) {
printf("B\n");
} else {
printf("C\n");
}
5.2 循环语句(for、while、do-while)
循环语句用于重复执行代码块。
for循环
语法:
for (初始化; 条件; 更新) {
// 循环体
}
示例:
for (int i = 0; i < 5; i++) {
printf("%d\n", i);
}
while循环
语法:
while (条件) {
// 循环体
}
示例:
int i = 0;
while (i < 5) {
printf("%d\n", i);
i++;
}
do-while循环
语法:
do {
// 循环体
} while (条件);
示例:
int i = 0;
do {
printf("%d\n", i);
i++;
} while (i < 5);
5.3 跳转语句(break、continue、goto)
跳转语句用于改变程序的执行流程。
break
用于退出循环或switch
语句。
示例:
for (int i = 0; i < 10; i++) {
if (i == 5) {
break; // 退出循环
}
printf("%d\n", i);
}
continue
用于跳过当前循环的剩余部分,进入下一次循环。
示例:
for (int i = 0; i < 10; i++) {
if (i % 2 == 0) {
continue; // 跳过偶数
}
printf("%d\n", i);
}
goto
用于无条件跳转到指定的标签。
示例:
int i = 0;
start:
if (i < 5) {
printf("%d\n", i);
i++;
goto start; // 跳转到start标签
}
6. 总结
本文档详细介绍了C语言的基本语法,包括变量、数据类型、运算符和控制结构。掌握这些基础知识是学习C语言编程的第一步,也是进一步学习高级编程技术的基础。希望本文档能够帮助大家快速入门C语言编程!