C语言关键字
关键字
变量类型关键字
1 | char val1 = 'a'; // 字符型变量 |
C99
新增定义bool
类型关键字_Bool
,_Bool
只有0
和1
两个值,如果给他赋非零值,它的值仍然是1
1 | _Bool b1 = 1; |
在库文件stdbool.h
中,有_Bool
的宏定义bool
,0
的宏定义false
及1
的宏定义true
,引入该库文件后,可以以如下形式定义bool
类型变量
1 | bool b1 = false; |
当使用printf
输出不同类型的字符时,需要使用以下占位符将对应类型的字符进行格式化
1 | %d // 十进制有符号整数 |
储存类型关键字
register
修饰的变量称为寄存器变量,系统会尽量(不一定)将其储存空间存放在寄存器中,当变量中的数据被成功存放在寄存器中之后,就没有了内存地址,CPU取寄存器中的数据会快于内存中的数据,但register
不能修饰数组,只能修饰字符型、短整形、整形及长整型变量
1 | // register声明寄存器变量 |
static
可以修饰全局变量、局部变量以及函数
1 | // static修饰静态变量 |
const
修饰的变量称为常量,常量值一旦被定义就无法修改,相当于java
中的final
1 | // const修饰常量 |
auto
用于声明自动变量,自动变量通常是局部变量(函数的形参也视为局部变量),局部变量在不加任何修饰的情况下默认就是自动变量。所以auto
可有可无了,修饰和不修饰一样
1 | // 没什么用,加和不加一样 |
extern
修饰外部变量或函数、引用外部变量或函数,extern
修饰的变量或函数表示可以被外部调用,由于函数和变量默认可被外部调用,所以作为修饰关键字时extern
是可以不添加的,但是当引用外部变量或函数时,必须使用extern
对其声明
1 | extern void test(); // 引用外部函数 |
控制语句关键字
if
else
for
while
do
switch
case
break
continue
goto
default
其中goto
直接跳转到目标标签所在的位置向下执行,如下代码将会输出125
;其它的不说了。
1 | int main() { |
其他关键字
sizeof
,sizeof()
函数用于获取括号中的表达式占用储存空间的大小,表达式在这里可以是变量、常量、数组、指针等,sizeof
的返回值是size_t
类型的无符号整数,单位是字节;size_t
虽然在许多情况下被广泛使用,但并不是关键字,而是一个预定义的类型名,其占位符是%zu
或%zd
1 | int a = 1; |
typedef
用于给已有数据类型起别名,使用别名定义的变量与原数据类型定义的变量没有任何类型上的差异
1 | typedef int NEW_INT; // 给int类型定义别名为NEW_INT |
volatile
修饰的变量每次使用时都去内存中取最新的值,而不是寄存器中的备份
1 | volatide int val1 = 11; |
类型转换
自动转换
字节数低的类型转字节数高的类型,会进行自动类型转换
强制转换
字节数高的类型转字节数低的类型,需要进行强制类型转换;如下将float
类型强制转换成int
类型,输出结果为2
1 | float val1 = 2.5f; |