C语言的数据类型有整形,字符型,浮点型,布尔型,还有自定义型。
短整型:short 2
整形:int 4
长整形:long 4
长长整形:long long 8
字符型char 1
单精度浮点型:folat 4
双精度浮点型:double 8
长双精度浮点型:long double 8
布尔类型:bool 1
有的类型还可以细分,整形中有短整型、整形跟长整形,长长整型。浮点型有单精度浮点型、双精度浮点型、长双精度浮点型。
不同类型的长度也不同,这里的长度可以理解为视角,不同类型可以通过强制类型转换来访问其他类型的变量,int能看四位,short能看两位,假如int a = 0x11223344,用int访问是44 33 22 11用强制类型转换,(unsigned short)a,访问的值是44 33,所以说长度是一种视角。
目录
一、整形
整形中细分了以下几种短整型、整形跟长整形,长长整型
短整型:short 2
整形:int 4
长整形:long 4
长长整形:long long 8
二、字符型
字符型就一个char 1
三、浮点型
浮点型分为单精度浮点型、双精度浮点型、长双精度浮点型。
在C语言的标准规定中,单精度浮点型至少精确到小数点后6位。
双精度浮点型至少精确到小数点后10位,一般精确到13位
长双精度浮点型与双精度浮点型精度一样
单精度浮点型:folat 4
双精度浮点型:double 8
长双精度浮点型:long double 8
四、布尔型:
布尔型是C99专门设计的用于判断对错的类型。在C语言中0代表假,非0代表真
而在布尔型变量中只有两种取值 :只有true和false
ture代表真,false代表假。
使用布尔类型要用布尔类型的头文件<stdbool.h>
#define bool _Bool
#define false 0
#define true 1
布尔类型:_Bool 1
五、自定义类型
最后就是自定义类型了,自定义顾名思义就是自己定义的类型,以上类型不能包含所有情况,有些情况就需要自己定义了
各种数据类型的长度
获得数据类型的长度需要用到sizeof操作符,sizeof单位是字节
sizeof操作符的操作数可以是类型也可以是变量还可以是表达式
sizeof(类型)
sizeof 变量
sizeof 表达式
另外,sizeof操作符返回的类型是size_t类型的。
sizeof返回无符号整数,但未规定返回什么类型,它可能是unsigned int型,unsigned float型,甚至是unsigned long long型。因此在C语言中创造了一个类型别名size_t
整形的长度:短整型short占2位,也就是说储存一个短整型要两个字节的大小。整形int占4位,长整形long占4位而long long占8位
字符型的长度:char类型挺特殊,储存时占1个字节
浮点型长度:folat占4位,double占8位,long double占8位
布尔类型的长度:_Bool与char类型一样都是占1位
int main()
{
printf("%zd\n", sizeof(short));
printf("%zd\n", sizeof(int));
printf("%zd\n", sizeof(long));
printf("%zd\n", sizeof(long long));
printf("%zd\n", sizeof(char));
printf("%zd\n", sizeof(float));
printf("%zd\n", sizeof(double));
printf("%zd\n", sizeof(long double));
printf("%zd\n", sizeof(bool));
return 0;
}
这里用了"%zd",%d也可以用,但会报出警告,%zd是最正确的对应着size_t。
从代码运行的结果也可以看出各种类型的长度