C语言32个关键字
文章目录
- 数据类型
- 1、数据类型(12个)
- 控制语句
- 2、控制语句关键字(12个)
- 存储类型
- 3、存储类型关键字(4个)
- 其他关键字
- 4、其他关键字(4个)
一共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 协议进行发布。
感谢您的理解与支持!如果您有任何疑问或需要进一步协助,请随时在评论区留言。