产生可执行的.exe文件与类型转换小结

1.每当我们的代码通过exe文件显示出来的时候,其实经过以下几个流程生成可执行.exe文件:
1.预编译(进行字处理)
2.编译(进行查错)
3.汇编(进行翻译成0或1)
4.链接(找符号+启动代码)
在这里插入图片描述

2.类型转换
各种类型数据大小:
char -128 ~ +127 (1 Byte)
short -32767 ~ + 32768 (2 Bytes)
unsigned short 0 ~ 65535 (2 Bytes)
int -2147483648 ~ +2147483647 (4 Bytes)
unsigned int 0 ~ 4294967295 (4 Bytes)
long == int
unsigned char的取值范围:0~255

转换规则:
1.默认,数据类型有窄向宽的转
2.同级别,无符号比有符号宽
3.整型起,整数默认为int,小数默认为double
//窄-》宽:左边补符号位

举例:
1.

    char a = 0x12345678;//保留低数据  0x78->0x00000078
	char b = 0xa1a2a3a4;//0xa4->0xffffffa4      
	printf("%08x,%08x\n",a,b);

输出时候会保留1个字节的数据,1字节为8位,一个数字占4位,左边再补符号位
所以输出0x00000078与0xffffffa4
2.

    unsigned short a = 10;
	unsigned int b = 10;
	if(a < -1)//unsigned short ,int
	{
		printf("a<-1\n");
	}
	else
	{
		printf("a>-1\n");
	}
	

会输出:a>-1
因为10为unsigned short 类型,而-1为整数 默认为整型
unsigned short 范围为0 ~ 65535,而int范围约为10亿
所以unsigned short 10转换为int由小到大,还是10
所以10>-1 输出a>-1

    if(b < -1)//unsigned int,int
	{
		printf("b<-1\n");
	}
	else
	{
		printf("b>-1\n");
	}

会输出:b<-1
因为b为unsigned int类型,而-1为整数 默认为整型
unsigned int 范围为0~4294967295,而int范围约为10亿
所以unsigned int 10转换为int由大到小会出现数据丢失
所以为了方便比较将int -1转换为unsigned int 为65535
所以10<65535 输出b<-1

    char x = 0x12;
	//printf("%x\n",x<<8);// 00 00 12 00

x左移8 扩大2的8次方 假设32位中以每2个为2的8次方,所以左移2位为1200

    char a = -1;
	char b = 255;//1111 1111->- 0000 0001->-1
	unsigned char c = -1;//255
	unsigned char d = 255;
	int e = a;
	int f = b;
	int g = c;
	int h = d;
	unsigned int i = a;//-1,11111111 11111111 11111111 11111111
	unsigned int j = b;//2^32 - 1
	unsigned int k = c;
	unsigned int x = d;
	printf("%d,%d,%d,%d\n",e,f,g,h);
	printf("%u,%u,%u,%u\n",i,j,k,x);

因为char的范围位-128-127 所以char b 255转换为-1
unsigned char 范围为0-255 所以unsigned char c 转换为 255
所以e,f,g,h分别输出为:-1,-1,255,255
因为unsigned int i = a; a char类型为-1转换为unsigned int i为2的32次方-1
unsigned int j = b;b char类型为255 转换为unsigned int j为2的32次方-1
unsigned int k;c unsigned char -1类型转换为255,所以转换为unsigned int 为255
unsigned int x;d unsigned char 255 转换为unsigned int 依旧为255

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值