当前位置: 首页 > news >正文

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 协议进行发布。

感谢您的理解与支持!如果您有任何疑问或需要进一步协助,请随时在评论区留言。

http://www.lryc.cn/news/586580.html

相关文章:

  • 锁相环初探
  • Python Day11
  • 《Spring 中上下文传递的那些事儿》Part 11:上下文传递最佳实践总结与架构演进方向
  • LeetCode题解---<485.最大连续1的个数>
  • [Token]Token merging for Vision Generation
  • 【嘉立创】四层板设计
  • 当大模型遇见毫米波:用Wi-Fi信号做“透视”的室内语义SLAM实践——从CSI到神经辐射场的端到端开源方案
  • 2025年亚太杯(中文赛项)数学建模B题【疾病的预测与大数据分析】原创论文分享
  • UnityShader——SSAO
  • Matplotlib 模块入门
  • BERT:双向Transformer革命 | 重塑自然语言理解的预训练范式
  • 从 Spring 源码到项目实战:设计模式落地经验与最佳实践
  • RMSNorm实现
  • 【离线数仓项目】——数据模型开发实战
  • Druid 连接池使用详解
  • 未来软件开发的新方向:从工程到智能的深度演进
  • 张量类型转换
  • 巅峰对决:文心4.5 vs DeepSeek R1 vs 通义Qwen3.0——国产大模型技术路线与场景能力深度横评
  • 剑指offer56_数组中唯一只出现一次的数字
  • HTML(上)
  • 图像扭曲增强处理流程
  • 计算机视觉 之 经典模型汇总
  • 粒子滤波|粒子滤波的相关算法理论介绍
  • 内容总监的效率革命:用Premiere Pro AI,实现视频画幅“一键重构”
  • 菜鸟的C#学习(二)
  • 直播录屏技术揭秘:以抖音直播录屏为例
  • 系统性学习C语言-第十五讲-深入理解指针(5)
  • 【华为OD】MVP争夺战2(C++、Java、Python)
  • JVM--虚拟线程
  • 数据结构之并查集和LRUCache