1. 数据类型
数据类型 | 描述 | 示例 | 占用字节(典型) |
---|---|---|---|
整型 | |||
int | 基本整型 | int a = 10; | 4字节 |
short | 短整型(范围更小) | short b = 5; | 2字节 |
long | 长整型(范围更大) | long c = 100000L; | 4或8字节 |
unsigned | 无符号整型(仅非负值) | unsigned int d = 5; | 同int |
浮点型 | |||
float | 单精度浮点数 | float e = 3.14f; | 4字节 |
double | 双精度浮点数(更高精度) | double f = 3.14159; | 8字节 |
字符型 | |||
char | 单个字符或ASCII值 | char g = 'A'; | 1字节 |
无值型 | |||
void | 表示无类型(用于函数或指针) | void func(); | — |
派生类型(需结合基础类型定义):
-
数组:
int arr[5] = {1, 2, 3, 4, 5};
-
指针:
int *ptr = &a;
-
结构体:
struct Student { char name[20]; int age; };
2. 变量
变量是程序运行时可以修改的存储单元,需先声明类型后使用。
-
声明与初始化:
int a = 10; // 声明并初始化整型变量 float b = 3.14f; // 声明单精度浮点变量 char c = 'C'; // 声明字符变量
-
作用域:
-
局部变量:在函数或代码块内声明,仅在其范围内有效。
-
全局变量:在函数外声明,整个程序可见。
3. 常量
常量是程序运行中不可修改的值。C语言定义常量的两种方式:
-
const
关键字(类型安全):const float PI = 3.14159f; // 定义浮点常量 const int MAX = 100; // 定义整型常量
-
#define
宏定义(预处理阶段替换):#define PI 3.14159 #define MAX 100
4. 运算符
C语言支持多种运算符,按功能分类如下:
(1) 算术运算符
运算符 描述 示例 结果 +
加 5 + 3
8
-
减 10 - 4
6
*
乘 3 * 4
12
/
除 10 / 3
3
(整数除法)%
取模 10 % 3
1
++
自增 a++
a = a + 1
--
自减 a--
a = a - 1
(2) 关系运算符
运算符 描述 示例 结果 ==
等于 5 == 5
1
(真)!=
不等于 5 != 3
1
>
大于 10 > 5
1
<
小于 3 < 2
0
(假)>=
大于等于 7 >= 7
1
<=
小于等于 5 <= 3
0
(3) 逻辑运算符
运算符 描述 示例 结果 &&
逻辑与 (5 > 3) && (2 < 4)
1
` ` 逻辑或 `(5 > 3) (2 > 4)` 1
!
逻辑非 !(5 == 3)
1
(4) 位运算符
运算符 描述 示例 结果(二进制) &
按位与 5 & 3
(0101 & 0011)0001
(1)` ` 按位或 `5 3`(0101 0011) 0111
(7)^
按位异或 5 ^ 3
(0101 ^ 0011)0110
(6)~
按位取反 ~5
(~0101)1010
(-6,补码)<<
左移 5 << 1
(0101→1010)10
(10)>>
右移 5 >> 1
(0101→0010)2
(2)(5) 赋值运算符
运算符 描述 示例(等价于) =
直接赋值 a = 5;
+=
加后赋值 a += 3;
→a = a + 3;
-=
减后赋值 a -= 2;
→a = a - 2;
*=
乘后赋值 a *= 4;
→a = a * 4;
-
5. 注意事项
-
类型转换:
-
隐式转换:小类型向大类型自动转换(如
int
→float
)。 -
显式转换:强制类型转换,如
(float)5 / 2
→2.5
。
-
-
运算符优先级:
-
从高到低:
()
→++
--
→*
/
%
→+
-
→>
<
→==
!=
→&&
→||
→=
.
-
-
未初始化变量:局部变量未初始化时值为随机数,可能导致程序错误。
示例代码:
#include <stdio.h>
#define PI 3.14159 // 宏定义常量
int main() {
// 变量声明与初始化
int a = 10;
float b = 3.14f;
char c = 'C';
const int MAX = 100; // const常量
// 算术运算
int sum = a + 5; // 15
float div = (float)a / 3; // 3.333...
// 关系与逻辑运算
if (a > 5 && b < 4.0) {
printf("条件成立!\n");
}
// 位运算
int bitwise = 5 & 3; // 1(二进制 0101 & 0011 = 0001)
return 0;
}