一共32个关键字分为
数据类型
1、数据类型(12个)
关键字 | 说明 | 示例 |
---|---|---|
**char ** |
声明字符类型(1字节) | char grade = 'A'; |
**int ** |
声明整型(通常4字节) | int age = 25; |
**float ** |
单精度浮点型(约6-7位小数) | float pi = 3.14f; |
**double ** |
双精度浮点型(约15位小数) | double precise = 3.1415926535; |
**short ** |
短整型(通常2字节) | short temp = -10; |
**long ** |
长整型(通常4或8字节) | long population = 1000000000L; |
**signed ** |
有符号类型(默认) | signed int value = -42; |
**unsigned ** |
无符号类型(仅非负数) | unsigned int counter = 100; |
**void ** |
空类型(无返回值/无参数) | void printHello() { printf("Hello"); } |
**struct ** |
结构体(封装多个类型) | struct Student { int id; char name[20]; }; |
**union ** |
联合体(共享内存空间) | union Data { int i; float f; } data; |
**enum ** |
枚举(定义命名常量) | enum Color { RED, GREEN, BLUE }; |
一般常用的有:
先来四个比较特殊的:
- 枚举 enum
- 结构体 struct
- 联合体 union
- 空类型 void
有符号无符号两个:
- 有符号 signed
- 无符号 unsigned
剩下6个具体的数据类型:
- 字符型 char(一个字节,也就是u8,uint8_8)
- 整数型 int(一般是4个字节,也就是u32,uint32_32)
- 短整型 short(一般是两个字节也就是u16,uint16_t)
- 长整型 long(一般是4或者8字节)
- 单浮点型 float(一般是6到7为小数)
- 双浮点型 double(一般是15位小数)
以上会有一些组合
例如:
unsigned int
unsigned short
unsigned long
控制语句
2、控制语句关键字(12个)
关键字 | 说明 | 示例 |
---|---|---|
**if ** |
条件判断 | if (score >= 60) { printf("Pass"); } |
**else ** |
否定分支 | else { printf("Fail"); } |
**switch ** |
多分支选择 | switch (grade) { case 'A': ... } |
**case ** |
分支匹配项 | case 1: printf("Option 1"); break; |
**default ** |
默认分支 | default: printf("Invalid"); |
**for ** |
循环(明确次数) | for (int i = 0; i < 5; i++) { ... } |
**while ** |
当型循环 | while (x > 0) { x--; } |
**do ** |
直到型循环(先执行) | do { x++; } while (x < 10); |
**break ** |
跳出循环/分支 | if (error) break; |
**continue ** |
跳过本次循环 | if (i == 3) continue; |
**goto ** |
无条件跳转(慎用) | goto cleanup; ... cleanup: ... |
**return ** |
函数返回值 | return a + b; |
主要是
break:
#include <stdio.h>
int main() {
for (int i = 0; i < 10; i++) {
if (i == 5) {
break; // i=5 时退出循环
}
printf("%d ", i);
}
return 0;
}
输出:0 1 2 3 4
说明:循环在 i=5
时被终止,后续迭代不再执行
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (j == 1) break; // 仅退出内层循环
printf("i=%d, j=%d\n", i, j);
}
}
仅跳出最近一层结构
- 在嵌套循环中,
break
只终止最内层循环:
输出:
i=0, j=0
i=1, j=0
i=2, j=0
与 continue
的区别
break
:完全退出循环。continue
:跳过当前迭代,进入下一次循环
continue:
#include <stdio.h>
int main() {
for (int i = 1; i <= 10; i++) {
if (i % 2 == 0) {
continue; // 跳过偶数
}
printf("%d ", i);
}
return 0;
}
输出:1 3 5 7 9
说明:i
为偶数时,continue
跳过 printf
,直接进入下一次循环
#include <stdio.h>
int main() {
int i = -5, sum = 0;
while (i <= 5) {
if (i < 0) {
i++;
continue; // 跳过负数
}
sum += i;
i++;
}
printf("非负数和:%d", sum);
return 0;
}
输出:非负数和:15
说明:负数时跳过累加,但需手动更新循环变量 i++
,避免死循环
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (j == 1) continue; // 仅跳过内层当前迭代
printf("i=%d, j=%d\n", i, j);
}
}
continue
仅影响最内层循环。嵌套循环中不会跳过外层:
输出:
i=0, j=0
i=0, j=2
i=1, j=0
…(其他同理)
与 break
的区别
continue
:仅跳过当前迭代,循环继续。break
:终止整个循环,直接退出
continue
的核心价值是优化循环控制,适合以下场景:
- 过滤数据:跳过无效值(如负数、零值)。
- 条件处理:特定条件下忽略部分计算(如跳过偶数的打印)。
- 简化逻辑:替代多层
if
嵌套,提升代码可读性。
存储类型
3、存储类型关键字(4个)
关键字 | 说明 | 示例 |
---|---|---|
**auto ** |
自动变量(默认局部) | auto int x = 10; (通常省略) |
**static ** |
静态变量(生命周期全局) | static int count = 0; (跨函数调用保留值) |
**register ** |
寄存器变量(建议快速访问) | register int i; (编译器可能忽略) |
**extern ** |
外部声明(跨文件引用) | extern int globalVar; (定义在其他文件) |
其他关键字
4、其他关键字(4个)
关键字 | 说明 | 示例 |
---|---|---|
**const ** |
常量(值不可修改) | const int MAX = 100; |
**sizeof ** |
计算类型/变量大小 | size_t size = sizeof(int); // 输出4 |
**typedef ** |
类型别名 | typedef int Integer; Integer num = 5; |
**volatile ** |
易变变量(防编译器优化) | volatile int flag = 0; (多线程/中断中常用) |
文章源码获取方式:
如果您对本文的源码感兴趣,欢迎在评论区留下您的邮箱地址。我会在空闲时间整理相关代码,并通过邮件发送给您。由于个人时间有限,发送可能会有一定延迟,请您耐心等待。同时,建议您在评论时注明具体的需求或问题,以便我更好地为您提供针对性的帮助。
【版权声明】
本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议。这意味着您可以自由地共享(复制、分发)和改编(修改、转换)本文内容,但必须遵守以下条件:
署名:您必须注明原作者(即本文博主)的姓名,并提供指向原文的链接。
相同方式共享:如果您基于本文创作了新的内容,必须使用相同的 CC 4.0 BY-SA 协议进行发布。
感谢您的理解与支持!如果您有任何疑问或需要进一步协助,请随时在评论区留言。