C语言类型关键字
类型关键字10个
void
空类型
char 字符型 1byte,与系统无关
short 短整型 与系统有关,32位系统上为2byte
int 整型 与系统有关,32位系统上为4byte
long 长整型 与系统有关,32位系统上为4byte
int 整型 与系统有关,32位系统上为4byte
long 长整型 与系统有关,32位系统上为4byte
float 单精度浮点型 与系统有关,32位系统上为4byte
double 双精度浮点型 与系统有关,32位系统上为8byte
struct 结构体
uion 共用体
enum 枚举
数据类型的本质是存放数据的大小和方法,编程时选择合理的数据类型是很有必要的.
数进制
计算机的特性只能存放二进制数据,所有数据存入计算机时必须转化为二进制数据.
20 // 十进制
024 // 八进制
0x14 // 十六进制
128u // 无符整型
1024UL // 无符长整型
1L // 长整型
8Lu // 无符长整型,大小写不区分
024 // 八进制
0x14 // 十六进制
128u // 无符整型
1024UL // 无符长整型
1L // 长整型
8Lu // 无符长整型,大小写不区分
char字符类型
char虽然是字符类型,但实质是整数类型,通过ascll码表将整数转化成字符.例如:ASCII 使用 65 来代表大写字母 A,因此存储字母 A 实际上存储的是整数65。
类型默认都是有符号的,char也不例外, char i; 等价于 signed char i;
char的取值范围:
signed char -128 ~ 127
unsigned char 0 ~ 255
比较两种定义的区别:
char i = 1; 在内存中就是0 0 0 0 0 0 0 1
char i = '1'; 字符‘1’的ASCII码49,在内存中就是0 0 1 1 0 0 0 1
其实也可以用int类型存放ASCLL码值: int i = '1' ; i = 49 ; 在内存中就是0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1
错误的定义:
char i = 'hello'; 用单引号时,单引号里面只能有一个字符;
char i = "1"; 用双引号代表字符串,单引号才代表单个字符;
short短整型
标准定义short短整型变量不得低于16位,即两个字节。
编译器头文件夹里面的
limits.h定义了short能表示的大小:SHRT_MIN~SHRT_MAX.
类型默认都是有符号的,short也不例外, short i; 等价于 signed short i;
short的取值范围(16bit):
signed short -32768 ~ 32767
unsigned short 0 ~ 65535
编译器头文件夹里面的
limits.h定义了short能表示的大小:SHRT_MIN~SHRT_MAX.
int整型
int erns; /* 声明一个变量 */
/* 注意:一定要用逗号(,),不能用分号(;)*/
int hogs, cows, goats; /* 声明三个变量 */
long长整型
long int num = 20;
long num = 20L;
unsigned long num = 20UL;
float单精度浮点类型/double双精度浮点类型
浮点数在机内用指数型式表示,分解为:符号,指数符号,
指数,
尾数 组成。
符号占1位二进制,表示数的正负。
指数符号占1位二进制,表示指数的正负。
尾数表示浮点数有效数字,0.xxxxxxx,但不存开头的0和点
指数存指数的有效数字。
指数存指数的有效数字。
指数占多少位,尾数占多少位,由计算机系统决定。
可能是数符加尾数占24位,指数符加指数占8位 -- float.
数符加尾数占48位,指数符加指数占16位 -- double.
可能是数符加尾数占24位,指数符加指数占8位 -- float.
数符加尾数占48位,指数符加指数占16位 -- double.
符号域 指数域 尾数域
单精度浮点数 1 位[31] 8位[30-23] 23位[22-00]
双精度浮点数 1 位[63] 16位[62-47] 47位[46-00]
单精度浮点数 1 位[31] 8位[30-23] 23位[22-00]
双精度浮点数 1 位[63] 16位[62-47] 47位[46-00]
对编程人员来说,double 和 float 的区别是double精度高,有效数字16位,float精度7位。但double消耗内存是float的两倍,double的运算速度比float慢得多.
浮点数值默认为double类型
3.14159F
0.1f
3e1
1.0E-3
3.14159F
0.1f
3e1
1.0E-3