C语言——数据类型、基本数据类型的取值范围-创新互联

目录

创新互联公司长期为上1000+客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为烟台企业提供专业的成都网站设计、网站建设烟台网站改版等技术服务。拥有十多年丰富建站经验和众多成功案例,为您定制开发。

一、数据类型

1.基本类型

2.sizeof运算符

3.signed和unsigned 

二、取值范围

1.比特位

2.字节

3.符号位

4.补码

5.基本数据类型的取值范围


一、数据类型

1.基本类型

(1)整数类型

  • short int
  • int
  • long int
  • long long int

(2)浮点数类型

  • float
  • double
  • long double

(3)字符类型

  • char

(4)布尔类型

  • _Bool

(5)枚举类型

  • enum
2.sizeof运算符

sizeof 运算符用于获得数据类型或表达式的长度

如:-sizeof(object);              //sizeof(对象)

 -sizeof(type_name);      //sizeof(类型)

 -sizeof object;               //sizeof 对象

代码举例:

#includeint main()
{
	int i;
	char j;
	float k;
	
	i = 123;
	j = 'C';
	k = 3.14;
	
	printf("size of int is %d\n",sizeof(int));
	printf("size of i is %d\n",sizeof(i));
	printf("size of char is %d\n",sizeof(char));
	printf("size of j is %d\n",sizeof j);
	printf("size of float is %d\n",sizeof(float));
	printf("size of k is %d\n",sizeof k);
	
	return 0;
}

代码运行结果:

分别打印各类型所占字节:

#includeint main()
{
	printf("int = %d\n",sizeof(int));
	printf("short int = %d\n",sizeof(short));
	printf("long int = %d\n",sizeof(long));
	printf("long long int = %d\n",sizeof(long long));
	printf("char = %d\n",sizeof(char));
	printf("_Bool = %d\n",sizeof(_Bool));
	printf("float = %d\n",sizeof(float));
	printf("double = %d\n",sizeof(double));
	printf("long double = %d\n",sizeof(long double));
	
	return 0;
	
}

运行结果(设备不同,结果可能也不同):

3.signed和unsigned 

  signed:代表有符号的,第一个位代表正负,剩余的代表大小,例如:signed int 大小区间为-128-127。(默认为signed)

  unsigned:代表无符号的,所有的位都为大小,没有负数,例如:unsigned int 大小区间为:0-255。

  • [signed] short [int]
  • unsigned short [int]
  • [signed] int
  • unsigned int
  • [signed] long [int]
  • unsigned long [int]
  • [signed] long long [int]
  • unsigned long long [int]

代码举例:

#includeint main()
{
	short i;
	unsigned short j;
	
	i = -1;
	j = -1;
	
	printf("%d\n",i);//d为打印带符号的 
	printf("%u\n",j);//u为打印不带符号的 
	
	return 0;
}

运行结果:

可见,打印 j 时,结果并不是我们期望出现的-1,而是65535,这与数据类型的取值范围有关。

二、基本数据类型的取值范围 1.比特位

CPU能读懂的最小单位是:比特位,bit,b。每个比特位只能存放二进制数,即0和1.

2.字节

内存机构最小寻址单位:字节,Byte,B

注:1Byte = 8 bit

一个字节能存放的大的数(2^{31}-1)用二进制表示为:

11111111

该数转化为十进制为:2147483647

补充:进制

打印2^{32}-1,代码如下:

# include#includeint main()
{
	unsigned int result = pow(2,32) - 1;
	printf("result = %u\n",result);
	
	return 0;
}

运行结果:

注意:若不加“unsigned”,则输出结果为2147483647.这是因为默认情况下int是signed类型的,也就是说左边第一位是符号位,所以必须加“unsigned”来使其变为一个无符号的整型变量,使得32位都用来存放数值。

3.符号位
  • 存放signed类型的存储单元中,左边第一位表示符号位。如果该位为0,表示该整数是一个正数;如果该位为1,表示该整数是一个负数。
  • 一个32位的整型变量,除去左边第一位符号位,剩下表示值的只有31个比特位。
4.补码
  • 正数的补码是该数的二进制形式。
  • 负数的补码需要通过以下几步获得:

(1)先取得该数的绝对值的二进制形式

(2)再将第1步的值按位取反(除符号位)

(3)最后将第2步的值加1

例如:

5.基本数据类型的取值范围
数据类型字节数取值范围
char1-128~127
unsigned char210~255
short2-32768~32767
unsigned short20~65535
int4-2147483648~2147483647
unsigned int40~4294967295
long4-2147483648~2147483647
unsigned long40~4294967295
long long8-9223372036854775808~9223372036854775807
unsigned long long80~18446744073709551615
数据类型字节数取值范围(绝对值)
float41.17549*10^-38~3.40282*10^38
double82.22507*10^-308~1.79769*10^308
long double122.22507*10^-308~1.79769*10^308

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


文章标题:C语言——数据类型、基本数据类型的取值范围-创新互联
路径分享:http://scyanting.com/article/cecphs.html