类型专题

一、数据类型

1.整型数据类型

对于整型数据而言,它们默认都是有符号的。

int main()
{
	char;       //1byte
	short;      //2byte
	int ;       //4byte
	long int;   //4byte
	long long;  //8byte
	//无符号类型unsigned
	unsigned char;       //1byte
	unsigned short;      //2byte
	unsigned int ;       //4byte
	unsigned long int;   //4byte
	unsigned long long;  //8byte
	return 0;
}

2.浮点数据类型和其他类型

对于浮点数来说,它们是后期加进去的,本身就是有符号的。

int main()
{
	float;           //4byte;
	double;          //8byte;
	long double;     //8byte,12byte,16byte;

	bool;            //1byte  一个比特位;

	void;           //不能定义变量,但是能定义指针;
	return 0;
}

二、数据在内存中的存储方式

一般而言,我们计算机遵循小端存放。
在这里插入图片描述
怎么检测当前系统是否是小端存放?

int main()
{
   short ch=0x0001;
   char*p=(char*)ch;//让指针指向高位,如果检测出来是00则是大端存放;
   if(*p==1)
   {
   	printf("xiao\n");
   	}
   	else
   	{
   		printf("da\n");
   	}
   	return 0;
}

1.计算机存储数据的方式

  • 计算机存储的是数据的补码。

原码:就是二进制表示法,即最高位是符号位(0为正,1为负),其余位数为数值的大小。
正数的原码反码补码都是相同的。
负数的原码是符号位不变,其余数据按位取反得反码,反码+1得补码。
在这里插入图片描述
类型的表示是有一定范围的,例如char类型它表示的范围是-128~127。
在执行函数或者打印函数时,一定要注意类型可以表示的范围,以下给出示例:

#include<stdio.h>
int main()
{
	for (char a = 0; a < 128; ++a)  
	{
		printf("%4d", a);
	}
	printf("\n");
	return 0;
}

解析:正数范围到127截止,即0111 1111,在+1成1000 0000负数,所以形成无限循环,打印结果如下:
在这里插入图片描述
在这里插入图片描述
如果是for (unsigned sigchar a = 0; a < 128; ++a)则打印0~127.

2.数据的隐式转换

(1)基本数据类型的隐式转换

  1. 表示范围小的赋值给表示范围大的。如果自身有符号数,扩充的是符号数。如果自身没有符号数,扩充的是0。
    代码示例:
int main()
{
	char a = 5;
	char b = -5;
	int x = a;
	int y = b;
	unsigned int z = b;
	printf("x=%d y=%d z=%d\n", x, y, z);
	printf("x=%x y=%x z=%x\n", x, y, z);
	return 0;
}

在这里插入图片描述
所以执行结果的十六进制表示如下所示:
在这里插入图片描述
以下再给出一些示例:
在这里插入图片描述
2. 表示范围大的赋值给表示范围小的,小范围是几字节则从大范围的低地址截取几字节。

#include<stdio.h>
int main()
{
	int  x = 0x123456A8;
	short a = x;
	printf("%d", a);
	char b = x;
	printf("%d", a);
}

在这里插入图片描述
所以代码运行结果如下所示:在这里插入图片描述

int main()
{
	char ch='a';
	int x=0;
	x=ch;
	x=(int)ch;  //在这里进行转换时,ch的类型并不发生转换,而是将ch扩充之后的值存入临时空间给x;
	return 0;
}

当不同基本类型数据进行比较时,要进行隐式转换,当两个数据都是char类型或者short int类型时,系统将它们转换成int类型进行比较。

总结:

  • 所谓类型相容,指的就是类型不同但系统可以自动进行转换。
  • 类型相容只针对基本数据类型,指针,数组,结构体类型,联合体类型,枚举类型,不具此性质。

(3)浮点数的隐式转换

根据国际标准IEEE754(电气和电子工程协会),任意一个二进制浮点数X可以表示成下面的形式:(-1)S*M*2E

  • (-1)^s表示符号位,当s=0,X为正数;当s=1,X为负数。
  • M表示有效数字,大于等于1,小于2。
  • 2E表示指数位。
    在这里插入图片描述
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值