本文主要是介绍C语言关键字综述,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
ANSI C标准C语言共有32个关键字,如下:
auto | break | case | char | const | continue | default | do |
double | else | enum | extern | float | for | goto | if |
int | long | register | return | short | signed | sizeof | static |
struct | switch | typedef | union | unsigned | void | volatile | while |
1999年12月16日,ISO推出了C99标准,该标准新增了5个C语言关键字:
inline | restrict | _Bool | _Complex | _Imaginary |
2011年12月8日,ISO发布C语言的新标准C11,该标准新增了7个C语言关键字:
_Alignas | _Alignof | _Atomic | _Static_assert | _Noreturn | _Thread_local | _Generic |
目前一般用的C语言都是ANSI C标准,部分编译器支持C99标准。注意,C语言的关键字是区分大小写的。编程鸟在其博客C语言关键字解析中,对这些关键字进行了分类,在此借鉴一下,我按照此分类对ANSI C标准的C语言关键字做简要介绍。
第一类,有关数据“模子”的关键字:void、char、short、int、long、float、double、sizeof;
第二类,有关数据符号的关键字:signed、unsigned;
第三类,构造类型:struct、union、enum、typedef;
第四类,有关存储与生命周期的类型:auto、static、extern、register、const、volatile;
第五类,有关语句的类型:if、else、for、while、do、switch、case、default、goto、break、continue、return
数据类型 | void | 声明函数无返回值或无参数,声明无类型指针 |
char | 声明字符型变量或函数 | |
short | 声明短整型变量或函数 | |
int | 声明整型变量或函数 | |
long | 声明长整型变量或函数 | |
float | 声明浮点型变量或函数 | |
double | 声明双精度变量或函数 | |
sizeof | 计算数据类型长度 | |
数据符号 | signed | 声明有符号类型变量或函数 |
unsigned | 声明无符号类型变量或函数 | |
构造类型 | struct | 声明结构体变量或函数 |
union | 声明共用数据类型 | |
enum | 声明枚举类型 | |
typedef | 用以给数据类型取别名 | |
有关存储与生命周期的类型 | auto | 声明自动变量 |
static | 声明静态变量 | |
extern | 声明变量是在其他文件 | |
register | 声明寄存器变量 | |
const | 声明只读变量 | |
volatile | 说明变量在程序执行中可被隐含地改变 | |
有关语句的类型 | if | 条件语句 |
else | 条件语句否定分支(与 if 连用) | |
for | 一种循环语句 | |
while | 循环语句的循环条件 | |
do | 循环语句的循环体 | |
switch | 用于开关语句 | |
case | 开关语句分支 | |
default | 开关语句中的“其他”分支 | |
goto | 无条件跳转语句 | |
break | 跳出当前循环 | |
continue | 结束当前循环,开始下一轮循环 | |
return | 子程序返回语句(可以带参数,也可不带参数)循环条件 |
关键字的大概说明如上表所示。本文不对每一个关键字做详细介绍,个人认为数据类型、符号类型和有关语句的类型不是难点,本文从这3个类型中选几个可能出错的稍作展开。
数据类型和数据符号
数据类型是最基本的关键字,表示一个变量的类型。不同的类型所占的字节大小不同,我用VS2010验证如下:
int i;unsigned int ii;char c;short sh;double dou;float f;long l;long int li;long long int lli;char str1[]={"abcde"};char str2[]={'a','b','c','d','e'};char str3[5]={"abcde"};printf("length of int: %d\r\n",sizeof(i));printf("length of unsigned int: %d\r\n",sizeof(ii));printf("length of char: %d\r\n",sizeof(c));printf("length of short: %d\r\n",sizeof(sh));printf("length of double: %d\r\n",sizeof(dou));printf("length of float: %d\r\n",sizeof(f));printf("length of long: %d\r\n",sizeof(l));printf("length of long int: %d\r\n",sizeof(li));printf("length of long long int: %d\r\n",sizeof(lli));printf("length of str1: %d\r\n",sizeof(str1));printf("length of str2: %d\r\n",sizeof(str2));printf("length of str3: %d\r\n",sizeof(str3));
这里注意sizeof是用来计算变量所占空间大小,单位为字节。输出结果如下:
数据类型和数据符号配合使用,C语言默认类型都是有符号的,只有前面用unsigned修饰,才表示无符号类型。
不同的系统数据类型的长度是不一样的,我的VS2010是32位系统的。32位系统和64位系统比较如下(表格中长度单位是比特):
I表示:int类型
L表示:long类型
P表示:pointer指针类型
32表示32位系统
64表示64位系统
字符串长度
上面的例子中对字符串进行了简单表示。可以发现str1、str2、str3长度是不一样的。
像str1这样不指定数组长度,直接用双引号赋值,除了正常的字符串外,在字符串最后,系统会默认加一个‘\0’,表示结束。所以str1的长度就是6字节;
像str2这样虽不指定数组长度,但是用单引号赋值,数据长度就是实际字符个数。所以str2长度就是5字节;
像str3这样指定数据长度,用双引号赋值,sizsof显示长度是数组指定的长度,也就是5字节。
构造类型和有关存储于生命周期的类型
构造类型和有关存储于生命周期的类型,将另写专题文章进行讲解,这两个类型的每一个关键字都比较重要,且展开讲解也需要大量篇幅。了解详细介绍,点击下面链接即可。
C语言关键字之static
C语言关键字之extern
C语言关键字之register
C语言关键字之const
C语言关键字之volatile
C语言关键字之struct
C语言关键字之union
C语言关键字之enum
C语言关键字之typedef
参考文献:
[1]https://blog.csdn.net/m0_38121874/article/details/82535129
这篇关于C语言关键字综述的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!