额。。代码呢?
你的程序呢,反正sizeof是求字节数呢,输出的肯定就不是a的值了
回复 qqq:{unsigned short a=0 printf("%d\n",sinzeof(a)) printf("%hu\n",a–1)}就有点不懂为什么最后结果是2和65535,听着模糊
回复 李能艳:应该能看清吧
回复 高艺超:等于2看懂了。你等于65535,没懂,是不是你的照片照少了
回复 李能艳:这个要牵扯一个原码反码补码的问题
这个好复杂
回复 高艺超:复杂
回复 高艺超:
printf("%d\a",sizeof(a));这里里面sizeof(a)如课件输出的是短整型无符号a的字节数,所以为2
printf("%hu\a",a-1);这里需要输出的是无符号短整型a-1这个数,注意这里讲的不是字节数,
由于a=0,所以a-1为-1,而-1不属于无符号短整型(0,1,2,3一直到课件中讲的32767才属于无符号短整型)。但又因为a定义的是无符号数 不能表示负数 当a初始为0 0-1=-1 超出了a的表示范围 所以是65535
回复 李能艳:
点赞
扫一扫分享朋友圈
二维码
分享
你确定要删除这个问题吗?