1.1关键字
1.1.1数据类型相关的关键字
用于定义变量或者数据类型
类型 变量名:
char,short,int,long,float,double,struck,union,signed,unsigned,void
char 字符型,用char定义的变量是字符型变量,占一个字节
char ch='a';=为赋值号
char ch1='1';正确
char ch2='1234';错误
short 短整型,使用short定义的变量都是短整型变量,占2个字节
short int a=11; -32768----32767
3、int整型,用int定义的变量是整型变量,在32位系统下占4个字节,在16平台下占2个字节
int a=44;
-20亿---20亿
4、long 长整型用long定义的变量是长整型的,在32位系统下占4个字节
long int a=66;
5、float单浮点型(实数),用float定义的变量是单浮点型的实数,占4个字节
float b=3.8f;
6、double 双浮点型(实数) ,用double定义的变量是双浮点型的实数,占8个字节
double b=3.8;
7、struct 这个关键字是与结构体类型相关的关键字,可以用它来定义结构体类型
8、union 这个关键字是与共用体(联合体)相关的关键字
9、enum 与枚举类型相关的关键字
10、signed 有符号(正负)的意思
在定义char、整型(short 、int、 long) 数据 的时候用signed修饰,代表咱们定义的数据是有符号
的,可以保存正数,也可以保存负数
例: signed int a=10;
signed int b=-6;
注意:默认情况下signed 可以省略即int a=-10://默认a就是有符号类型的数据
11、unsigned 无符号的意思
在定义char、整型(short 、int、 long) 数据的时 候用umsigned修饰,代表咱们定义的数据是无究
号类型的数据
只能保存正数和0
扩展:内存存储
char ch='a'; //占 1个字节,存储的是97
0110
0001.
字节:内存的基本单位,8位为1个字节
计算机存储时,只能存储1和0的二进制组合,1和0都分别占1位,字符型数据在内存中存储的不是字符本身,而是存储其Ascil码
整型变量存储的是其值的二进制
12、void 空类型的关键字
char、int 、float 都可以定义变量
void不能定义变量,没有void类型的变量
void是用来修饰函数的参数或者返回值,代表函数没有参数或没有返回值
例:
void fin(void)
{
}
代表fun函数没有返回值,fun 函数没有参数
#include <stdio.h>
int main (){
char a= 'a';
short int b= 10;
int c;
long int d;
float e;
double f;
printf("%d\n",sizeof(a));
printf("%d\n",sizeof(b));
printf("%d\n",sizeof(c));
printf("%d\n",sizeof(d));
printf("%d\n",sizeof(e));
printf("%d\n",sizeof(f));
return 0;
}
运行结果
![](https://i-blog.csdnimg.cn/blog_migrate/50280bcff20d6bc4c1545089dd0720f9.png)
1.1.2存储相关关键字
register、static. const、 auto、 extern
1、register是寄存器的意思,用register修饰的变量是寄存器变量,
即:在编译的时候告诉编译器这个变量是寄存器变量,尽量将其存储空间分配在寄存器中。
注意:
(1):定义的变量不- -定真的存放在寄存器中。
(2):cpu取数据的时候去寄存器中拿数据比去内存中拿数据要快
(3):因为寄存器比较宝贵,所以不能定义寄存器数组
(4): register 只能修饰字符型及整型的,不能修饰浮点型
register char ch;
register short int b;
register int C;
register float d;//错误的
(5):因为register修饰的变量可能存放在寄存器中不存放在内存中,所以
不能对寄存器变量取地址。因为只有存放在内存中的数据才有地址
register int a;
int *p;
p=&a;//错误的. a可能没有地址
2、static 是静态的意思
static可以修饰全局变量、局部变量、函数
3、const
const是常量的意思
用const修饰的变量是只读的,不能修改它的值
const int a= 101;//在定义a的时候用const修饰,并赋初值为101
从此以后,就不能再给a赋值了
a-111://错误的
const可以修饰指针
4、auto int a;和 inta是等价的,auto 关键字现在基本不用
5、extern 是外部的意思,一般用于函数和全局变量的声明
1.1.3控制语句相关的关键字
if、else 、break、 continue、 for 、while、 do、 switch case
goto、default
1.1.4其他关键字
sizeof、typedef、 volatile
1、sizeof
使用来测变量、数组的占用存储空间的大小(字节数)
例3 :
int
a=10;
int num;
num=sizeof(a);
2、typedef 重命名相关的关键字
unsigned short int a= 10;
U16
关键字,作用是给一个已有的类型,重新起个类型名,并没有创造一个 新的类型
以前大家看程序的时候见过类似的变量定义方法
INT16 a;
U8 ch;
INT32 b;
大家知道,在c语言中没有INT16U8这些关键字
INT16 U8是用typedef定义出来的新的类型名,其实就是shott int及unsigned char的别名
typedef起别名的方法:
1、用想起名的类型定义一个变量
shortint a;
2、用新的类型名替代变量名
short int INT16;
3、在最前面加typedef
typedef short int INT16;
4:就可以用新的类型名定义变量了
INT16 b;和short int b;//是一个效果
#include <stdio.h>
//short int b;
//short int INT16;
typedef short int INT16;
int main (int argc,char*argv[]){
short int a=10;
INT16 c=111;
printf("a=%d\n",a);
printf("c=%d\n",c);
return 0;
}
运行结果
![](https://i-blog.csdnimg.cn/blog_migrate/6b5c4cbe7c06a3f5f80df745efd82cd5.png)
3、volatile 易改变的意思
用volatile定义的变量,是易改变的,即告诉cpu每次用volatile 变量的时候,重新去内存中取
保证用的是最新的值,而不是寄存器中的备份。
volatile关键字现在较少适用
volatile int a=10;
扩展知识:
命名规则:
在c语言中给变量和函数起名的时候,由字母、数字、下划线构成
必须以字母或者下滑线开头
例5 :
int a2;//正确的
int a 2;//正确的
int_ _b;//正确的
int 2b;//错误的
int $a2;//错误的
注意:起名的时候要求见名知意
1.Linux风格
stu num
2.驼峰风格|
StuNum
3.大小写敏感
int Num;
int num;