c语言数据类型

数据类型名称	     字节数	别名			        	取值范围
int		*	       signed,signed int			由操作系统决定,即与操作系统的"字长"有关
unsigned int	*	unsigned				由操作系统决定,即与操作系统的"字长"有关
__int8		1	char,signed char			–128 到 127
__int16		2	short,short int,signed short int		–32,768 到 32,767
__int32		4	signed,signed int	–		2,147,483,648 到 2,147,483,647
__int64		8	无				–9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
bool		1	无				false 或 true
char		1	signed char			–128 到 127
unsigned char	1	无				0 到 255
short		2	short int,signed short int		–32,768 到 32,767
unsigned short	2	unsigned short int			0 到 65,535
long		4	long int,signed long int		–2,147,483,648 到 2,147,483,647
long long		8	none (but equivalent to __int64)	–9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
unsigned long	4	unsigned long int			0 到 4,294,967,295
enum		*	无				由操作系统决定,即与操作系统的"字长"有关
float		4	无				3.4E +/- 38 (7 digits)
double		8	无				1.7E +/- 308 (15 digits)
long double	8	无				1.7E +/- 308 (15 digits)
wchar_t		2	__wchar_t				0 到 65,535

类型标识符			类型说明				长度
  				       			(字节)			范围						备注
char				字符型					1		-128 ~ 127					-2~ (2-1)
unsigned char		无符字符型				1		0 ~ 255						0 ~ (2-1)

short int			短整型					2		-32768 ~ 32767				2~ (2- 1)
unsigned short int	无符短整型				2		0 ~ 65535			        0 ~ (2- 1)

int					整型					4		-2147483648 ~ 2147483647	-2~ (2- 1)
unsigned int		无符整型				4		0 ~ 4294967295				0 ~ (2-1)

float				实型(单精度)			4		1.18*10~ 3.40*10			7位有效位
double				实型(双精度)			8		2.23*10~ 1.79*10			15位有效位

long double			实型(长双精度)		10		3.37*10~ 1.18*10			19位有效位



四、数据类型:计算机描述对象的单位


基本数据类型:
	
数据类型种类:									32位系统所占字节数				64位系统所占字节数			format(格式控制符,C语言输入和输出是使用识别数据类型的符号)	

字符类型:			char(signed char)			1															%c/%hhd
无符号字符类型:	unsigned char 				1															%hhu

短整型:			short(short int)			2															%hd		--->h表示half(一半)
无符号短整型:		unsigned short				2															%hu

整型:				int							4															%d
无符号整型:		unsigned int 				4															%u

长整型:			long						4								8							%ld
无符号长整型:		unsigned long				4								8							%lu

长长整型:			long long					8															%lld
无符号长长整型:	unsigned long long			8															%llu

单精度浮点型:		float						4															%f
双精度浮点型:		double						8															%lf

布尔型:			bool					    1															%hhd

注意:
	1、sizeof可以自动计算数据类型或变量所占字节数
	
		32位系统:printf("%u\n", sizeof(a)); 
		64位系统:printf("%lu\n", sizeof(a)); 
		
	2、使用布尔类型要加头文件 #include <stdbool.h>
			bool a = 1;  <==>bool a = true;
			bool a = 0;	 <==>bool a = false;
			
	3、计算机存储的数据都是二进制数,如何存储字符,把每个字符都设置一个编号(ASCII码),如果要输出字符必须要用%c,输出%hhd, %hhu		
		总的字符的个数:128个字符
		
		'A'  == 65
		'a'  == 97
		'0'	 == 48
		
	4、指针内存大小:
		32位系统占4个字节(无论是什么类型的指针在32位系统中都占4个直接,因为存储的是地址,64位也一样)
		64位系统占8个字节(固定的)
		
	5.一个数组的数据类型
		int a[2][3] ={1, 2, 3, 4, 5, 6};	
				a		:二维数组数组名,大数组的数组名,这个二维数组首元素地址,第一个小数组的地址
							a+1 == a+1*sizeof(a[0]) == a+1*12
							a -->类型为:int (*)[3]
				
				&a		: 二维数组的地址,也就是大数组的地址
							&a+1 == &a+1*sizeof(a) == &a+1*24
							&a -->类型为:int (*)[2][3] 
			
						
				a[0]	:小数组数组名,小数组的首元素地址,a[0][0]是小数组的首元素,a[0] == &a[0][0]
							a[0] 的类型:int *
							a[0][0] 的类型是:int
							&a[0][0]的类型是:int *
							a[0]+1 == a[0]+1*sizeof(int) == a[0]+1*4
						
				&a[0]	: 小数组的地址
							&a[0] -->类型为:int (*)[3]
							&a[0]+1 == &a[0]+1*sizeof(a[0]) ==  a+1*12
						
				a[0][0]	: a[0][0]是小数组的首元素
							a[0][0]-->类型为: int 
				
				
				&a[0][0]: &a[0][0]是小数组的首元素地址
							&a[0][0]+1 == &a[0][0]+1*sizeof(int) == &a[0][0]+1*4
							&a[0][0]-->类型为: int *
		
		int a[3];
			a  ------>int			//表示一维数组首元素地址,数组名就是首元素地址
			a[0]----->int
			&a ------>int (*)(int)  //表示整个一维数组的地址
			&a[0]---->int *         //表示一维数组首元素地址
		
		6.指针数组与数组指针区别
				1.指针数组:首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身     ( int *p1[10] )
				决定。它是“储存指针的数组”的简称。
				
				2.数组指针:首先它是一个指针,它指向一个数组。在 32 位系统下永远是占 4 个字节,  ( int (*p2)[10] )
	
			至于它指向的数组占多少字节,不知道。它是“指向数组的指针”的简称
			
			
		7.	1gb     =1024mb		
			1mb		=1024kb		
			1kb		=1024字节
			1字节	= 8bit		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值