0
点赞
收藏
分享

微信扫一扫

C语言(mini )-- 整型提升和算术转换

罗子僧 2022-01-31 阅读 55

整型提升的意义:
  CPU内整型运算器(ALU)的操作数的字节长度一般是int的字节长度,同时也是CPU的通用寄存器的长度。
  因此,表达式中各种长度小于int的类型相加,在送入CPU执行时,都要先转换为int或unsigned。
  整型提升的规则:(1)若是有符号数,则前面补符号位。(2)若是无符号数,则前面补0。

int main()
{
	//计算机中二进制存储都是补码
	//char = 8字节;short = 2 / 4字节;int = 32 / 64字节
	char a = 3;
	//a的二进制:00000011
	char b = 127;
	//b的二进制:01111111
	char c = a + b;
	//求表达式长度会先转换为int型32字节
	//a + b = 00000000000000000000000000000011 + 
	//        00000000000000000000000001111111
	//      = 00000000000000000000000010000010
	//c的二进制:100000010
	printf("%d\n", c);//结果为-126
	//以整型的形式输出,也会整型提升
	// char c = 00000000000000000000000010000010
	//  int c = 11111111111111111111111110000010(补码)
	//  int c = 11111111111111111111111110000001(反码)
	//  int c = 10000000000000000000000001111101(源码) = -126
	return 0;
}

寻常算术转换:
  如果某个操作符的各个操作数属于不同类型,那么除非其中一个数转换为另一个操作数的类型,否则操作无法进行。

操作符类型优先转换顺序:
int < unsigned int < long int < unsigned long int < float < double < long double
举报

相关推荐

0 条评论