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; |