C基础第二天作业

1.char c=128 用%d打印,结果是什么?为什么?
 

#include <stdio.h>
int main(int argc, const char *argv[])
{
	char c = 128;

	printf("%d\n",c);
	return 0;
}

结果:-128

原因:计算机能识别的是二进制补码,将128转换成二进制1000 0000 ,这个为补码,原码=反码+1.因此原码为1000 0000等于-0,-0为特殊值,-0=-128.所以输出结果为-128

2.unsigned char c=-1,用%u打印,结果是什么?为什么?

结果:255

原因:-1为补码,将-1转换为二进制码1000 0001 转换成源码为1111 1111,转换成十进制等于255.

3.char 类型数据中存储0x9c,用%d打印的值是什么?写出运行结果(补码,反码,源码推算过程写出来)

结果:

 原因:将0x9c转换成二进制1001 1100

                补码:1001 1100

                反码:1110  0011

                源码:1110  0100

               转换成十进制等于-100.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值