char、signed char和unsigned char

前言:

1.整数在内存中以二进制补码的形式存放

2.打印时打印的是原码

3.整形提升:当数据类型为char、signed char、unsigned char、short、signed short、unsigened short时,它们在内存所占中的数据类型长度<4字节,在进行计算或打印时,会发生整形提升,即前面补符号位

(1)正整数发生整形提升时,前面会补0

(2)负整数发生整形提升时,前面会补1

举例如下:

    char a = -1;
	//10000000 00000000 00000000 00000001 原码
	//11111111 11111111 11111111 11111110 反码(取反)
	//11111111 11111111 11111111 11111111 补码(+1)
	//char类型截断,取一个字节
	//11111111
	//打印:整形提升(因为是负数,所以前面补1)后是补码,再求原码(-1,取反)
	//11111111 11111111 11111111 11111111补码
	//11111111 11111111 11111111 11111110反码(-1)
	//10000000 00000000 00000000 00000001原码(取反)
	//-1


	signed char b = -1;
	//有符号数,同a
	//-1
	
	
	unsigned char c = -1;
	//10000000 00000000 00000000 00000001原码
	//01111111 11111111 11111111 11111110反码(取反)
	//01111111 11111111 11111111 11111111补码(+1)
	//char类型截断,取一个字节
	//11111111
	//打印:整形提升(因为是无符号数,所以前面补0)后是补码,再求原码(原码同补码)
	//00000000 00000000 00000000 11111111补码
	//原码同补码
	//255
	
	printf(" a = %d,b = %d,c =%d", a, b, c);
	//a = -1 b = -1 c = 255

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值