while是c语言的关键字,C语言学习笔记(一) 关键字

今天开始,准备重新学习下C语言。虽然自己了解C语言语法,但总觉得理解得很不够。由于各种原因,以前对C语言的研究总是不能坚持,但这次希望自己能够做得更好。这里推荐下《C语言深度剖析》这本书,如果有其他好书,也请各位推荐,不胜感谢!

本文主要总结C语言的关键字,并对一些特殊的关键字进行介绍,对于static、extern等比较复杂的关键字后面单独总结。

究竟有多少个关键字?

C语言的关键字不像其他语言,关键字不是很固定。(关于C89和C99,以后会写文章总结)C89定义的关键字有以下32个:关键字含义关键字含义关键字含义

auto自动变量void空类型short短整型变量

int整型变量long长整型变量char字符型变量

signed有符号类型变量unsigned无符号类型变量float浮点型变量

double双精度变量register寄存器变量static静态变量

extern外部引用变量const只读变量volatile隐式可变变量

enum枚举类型struct结构体类型union联合数据类型

switch开关语句case开关语句分支default开关默认分支

do循环体while循环条件for循环语句

break跳出当前循环continue结束当次循环return返回语句

if条件语句else条件否定分支goto无条件跳转

typedef重命名类型sizeof计算对象大小

C99增加了一个inline(内联)关键字。

C11最终草案n1570文档中,还增加了restrict、_Alignas、_Alignof、_Atomic、_Bool、_Complex、_Generic、_Imaginary、_Noreturn、_Static_assert、_Thread_local这么一些关键字,这当然是后话了。

最快的变量:register变量

这个关键字声明将变量尽可能放在寄存器中。受寄存器的大小和个数等限制,该关键字并不总是有效。使用时应该注意:

并非声明了register就一定会在寄存器中。

register变量必须是能被 CPU 寄存器所接受的类型。意味着register变量必须是一个单个的值,并且其长度应小于或等于整型的长度。

register变量可能不存放在内存中, 所以不能用取址运算符“&”来获取register变量的地址。

sizeof是关键字

由于sizeof使用上的特殊性(一般会有括号),常常被误认为是一个标准函数,但其实际上是一个关键字。而且这个括号并不总是必须的,看以下代码:int i;         //32位系统下

sizeof(int)    //4

sizeof(i);     //4

sizeof int;    //编译出错

sizeof i;      //4

也就是说,sizeof在计算变量大小时可以省略括号,但计算类型大小时不可以省略。当然,通常还是提倡一律加上括号。

enum类型

C语言中的枚举类型一般定义如下:enum enum_type_name{

ENUM_CONST_1,

ENUM_CONST_2,

//...

ENUM_CONST_n;

}enum_var_name;

其中,enum_type_name为枚举类型名,enum_var_name是变量名。

枚举常量可以显式赋值。如果不赋值则会从被赋初值的那个常量开始依次加 1,如果都没有赋值,它们的值从 0 开始依次递增 1。例如定义三原色的枚举:enum PrimaryColor{

RED,         //0

GREEN=10,    //10

BLUE         //11

}color;

枚举和#define宏的区别主要有:#define宏常量是在预编译阶段进行简单替换,枚举常量则是在编译的时候确定其值。

一般在编译器里可以调试枚举常量但是不能调试宏常量。

枚举可以一次定义大量相关的常量,而#define宏一次只能定义一个。

typedef不支持基本类型扩展

下面是一个例子,说明typedef和#define又有区别:A)    #define int int32;

unsigned int32 i=10;        //OK

B)    typedef int int32;

unsigned int32 i=10;        //编译出错

使用#define定义的别名由于是直接替换因此A很好理解,但很可惜,typedef不能支持这样的扩展。

关于基本关键字就介绍到这里。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值