当前位置 博文首页 > 不积跬步,无以至千里:C语言再学习--关键字
如需转载请注明出处:https://blog.csdn.net/qq_29350001/article/details/53021879
C语言一共有32个关键字,如下表所示:
?
关键字 | 说明 |
auto | 声明自动变量 |
short | 声明短整型变量或函数 |
int | 声明整型变量或函数 |
long | 声明长整型变量或函数 |
float | 声明浮点型变量或函数 |
double | 声明双精度变量或函数 |
char | 声明字符型变量或函数 |
struct | 声明结构体变量或函数 |
union | 声明共用数据类型 |
enum | 声明枚举类型 |
typedef | 用以给数据类型取别名 |
const | 声明只读变量 |
unsigned | 声明无符号类型变量或函数 |
signed | 声明有符号类型变量或函数 |
extern | 声明变量是在其他文件正声明 |
register | 声明寄存器变量 |
static | 声明静态变量 |
volatile | 说明变量在程序执行中可被隐含地改变 |
void | 声明函数无返回值或无参数,声明无类型指针 |
if | 条件语句 |
else | 条件语句否定分支(与?if?连用) |
switch | 用于开关语句 |
case | 开关语句分支 |
for | 一种循环语句 |
do | 循环语句的循环体 |
while | 循环语句的循环条件 |
goto | 无条件跳转语句 |
continue | 结束当前循环,开始下一轮循环 |
break | 跳出当前循环 |
default | 开关语句中的“其他”分支 |
sizeof | 计算数据类型长度 |
return | 子程序返回语句(可以带参数,也可不带参数)循环条件 |
?
参看:C语言32个关键字详解
?1数据类型关键字
?A)基本数据类型(5个)
?void:声明函数无返回值或无参数,声明无类型指针,显式丢弃运算结果
?char:字符型类型数据,属于整型数据的一种
?int:整型数据,通常为编译器指定的机器字长
?float:单精度浮点型数据,属于浮点数据的一种
?double:双精度浮点型数据,属于浮点数据的一种
?B)类型修饰关键字(4个)
?short:修饰int,短整型数据,可省略被修饰的int。
?long:修饰int,长整形数据,可省略被修饰的int。
?signed:修饰整型数据,有符号数据类型
?unsigned:修饰整型数据,无符号数据类型
?C)复杂类型关键字(5个)
?struct:结构体声明
?union:共用体声明
?enum:枚举声明
?typedef:声明类型别名
?sizeof:得到特定类型或特定类型变量的大小
?D)存储级别关键字(6个)
?auto:指定为自动变量,由编译器自动分配及释放。通常在栈上分配
?static:指定为静态变量,分配在静态变量区,修饰函数时,指定函数作用域为文件内部
?register:指定为寄存器变量,建议编译器将变量存储到寄存器中使用,也可以修饰函数形参,建议编译器通过寄存器而不是堆栈传递参数
?extern:指定对应变量为外部变量,即在另外的目标文件中定义,可以认为是约定由另外文件声明的对象的一个“引用“
?const:与volatile合称“cv特性”,指定变量不可被当前线程/进程改变(但有可能被系统或其他线程/进程改变)
?volatile:与const合称“cv特性”,指定变量的值有可能会被系统或其他进程/线程改变,强制编译器每次从内存中取得该变量的值
?2流程控制关键字
?A)跳转结构(4个)
?return:用在函数体中,返回特定值(或者是void值,即不返回值)
?continue:结束当前循环,开始下一轮循环
?break:跳出当前循环或switch结构
?goto:无条件跳转语句
?B)分支结构(5个)
?if:条件语句
?else:条件语句否定分支(与if连用)
?switch:开关语句(多重分支语句)
?case:开关语句中的分支标记
?default:开关语句中的“其他”分治,可选。
?C)循环结构(3个)
?for:for循环结构,for(1;2;3)4;的执行顺序为1->2->4->3->2...循环,其中2为循环条件
?do:do循环结构,do 1 while(2);的执行顺序是1->2->1...循环,2为循环条件
?while:while循环结构,while(1) 2;的执行顺序是1->2->1...循环,1为循环条件
?以上循环语句,当循环条件表达式为真则继续循环,为假则跳出循环。
?
下面来详细介绍各个关键字:
(简单的就一笔带过,有必要的会另起一篇文章,详细讲述。)
基本数据类型(5个)
?void
?char
?int
?float
?double
类型修饰关键字(4个)
?short
?long
?signed
?unsigned
?
1)在windows,32位系统中
char ? ? ? ? 1个字节
short ? ? ? ?2个字节
int ? ? ? ? ? ?4个字节
long ? ? ? ? 4个字节
double ? ?8个字节
float ? ? ? ? 4个字节
2)数据类型和占位符之间的对应关系
char和unsingned char ? ? %c
short ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?%hd
unsigned short ? ? ? ? ? ? ? ? %hu
long ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? %ld
unsigned long ? ? ? ? ? ? ? ? ?%lu
int ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?%d
unsigned int ? ? ? ? ? ? ? ? ? ? %u
float ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? %f/%g
double ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? %lf/%lg
%f和%lf会保留小数点后面多余的0 ? 如 3.1400000 ? .2%f得 3.14
%g和%lg不会保留 ? 如 3.14
?
规定整型值相互之间大小的规则:
长整型至少应该和整型一样长,而整型至少应该和短整型一样长。
?
扩展:C语言再学习 5--浮点数
扩展:C语言再学习 19 -- 负数
?
3)signed、unsigned关键字
signed char取值范围是 -2^7 到 2^7-1
unsigned char取值范围是 0 到 2^8
?
signed int取值范围是 -2^31 到 2^31-1
unsigned int取值范围是 0 到 2^32
?
留两个问题思考:
1), int i = -20;
unsigned j = 10;
i+j 的值为多少?为什么?
-10 ? 应该是按照有符号的来计算的
2), 下面的代码有什么问题?
unsigned i ;
for (i=9;i>=0;i--)
{
printf("%u\n",i);
}
一直打印无法停止,到了0 后,变成-1。因为-1是有符号的了,再变成 4294967295一直又减下去了
?
4)void关键字:
参看:C语言再学习 19 -- void
复杂类型关键字(5个)
?struct
?union
?enum
?typedef
?sizeof
1)struct
参看:C语言再学习 -- 关键字struct(转)
?
2)union、enum
参看:C语言再学习 -- 结构和其他数据形式
?
3)typedef
参看:C语言再学习 -- 关键字typedef
?
4)sizeof
参看:C语言再学习 -- sizeof与strlen
存储级别关键字(6个)
?auto
?static
?register
?extern
?const
?volatile
1)auto、static、register、extern
参看:C语言再学习 -- 存储类型关键字
?
2)const
参看:C语言再学习 -- 关键字const
?
3)volatile
参看:C语言再学习 -- 关键字volatile
?
2、流程控制关键字
?A)跳转结构(4个)
?return
?continue
?break
?goto
?
1)return
参看:C语言再学习 -- 关键字return和exit
?
2)continue、break、goto
参看:C语言再学习 -- 分支与跳转语句
?B)分支结构(5个)
?if
?else
?switch
?case
?default
?
1)if、else、switch、case、default
参看:C语言再学习 -- 分支与跳转语句
?C)循环结构(3个)
?for
?do
?while
?
1)for、do、while
参看:C语言再学习 -- 循环语句
如需转载请注明出处:https://blog.csdn.net/qq_29350001/article/details/53021879
cs