目录
- 类型限定符
- 格式化输入输出
- 运算符详解
- 类型转换
- 流程控制
- 函数基础
1. 类型限定符
作用:修饰变量行为
const
:常量(不可修改)volatile
:防止编译器优化register
:建议寄存器存储extern
:声明外部变量
#include <stdio.h>
int main() {
const int MAX = 100; // ✅ 合法
// MAX = 200; // ❌ 编译错误
return 0;
}
2. 格式化输入输出 📝
2.1 printf函数 🖨️
格式符速查表:
格式符 | 说明 | 示例 |
---|---|---|
%#x |
十六进制带前缀 | 0x45 |
%+d |
显示正负号 | +12 |
%6.2f |
宽度6,精度2 | 123.46 |
printf("%#x\n", 0x45); // 输出:0x45
printf("%+6.2f\n", 123.456); // 输出:+123.46
2.2 scanf函数 ⌨️
输入规则:
- 默认以空格/Tab分隔
%c
会读取空白符- 使用
%*d
跳过输入
int a; char c;
scanf("%d%*c%c", &a, &c); // 输入"100A" → a=100, c='A'
3. 运算符详解 🧮
3.1 位运算符
运算符 | 说明 | 示例 |
---|---|---|
& |
按位与 | 0x23 & 0x45 |
| |
按位或 | 0x23 | 0x45 |
<< |
左移(乘2) | 0x23 << 1 |
int a = 0x23;
printf("%#x\n", a << 1); // 输出:0x46
3.2 条件运算符 ⚖️
语法:条件 ? 真值 : 假值
嵌套示例:
int max = (a>b) ? a : (b>c) ? b : c;
3.3 sizeof运算符 📏
特性:
- 不执行表达式运算
- 可计算类型/变量/数组大小
int arr[10];
printf("数组大小:%ld\n", sizeof(arr)); // 输出:40(假设int为4字节)
4. 类型转换 🔄
隐式转换规则:
强制转换语法:
float x = 3.14;
int y = (int)x; // y=3
5. 流程控制 🎮
5.1 循环结构
for循环示例(打印9x9乘法表):
for(int i=1; i<=9; i++) {
for(int j=1; j<=i; j++) {
printf("%dx%d=%-2d ", j, i, i*j);
}
printf("\n");
}
输出片段:
1x1=1
1x2=2 2x2=4
...
5.2 跳转控制
goto使用场景(错误处理):
if(error) {
goto CLEANUP;
}
// ...正常逻辑
CLEANUP:
free(resources);
6. 函数基础 🛠️
系统函数对比:
函数 | 输入源 | 输出目标 |
---|---|---|
printf |
格式化字符串 | 标准输出 |
sprintf |
格式化字符串 | 字符数组 |
fprintf |
格式化字符串 | 文件流 |
自定义函数示例:
int max(int a, int b) {
return (a > b) ? a : b;
}
💡 编程贴士
- 位运算优化:
a ^= b; b ^= a; a ^= b;
可无需中间变量交换两数。 - 避免浮点判等:
用fabs(a - b) < 1e-6
替代a == b
。 - switch穿透特性:
多个case
共享同一逻辑时,可省略break
。
通过系统学习这些核心语法,您已掌握C语言的基础框架! 🚀
疑问交流:欢迎在评论区留言讨论!