下面程序的输出结果是()
void main()
{unsigned m=32768;
Printf(“m=%d\n”,m);
}
A)m=32768 B)m=32767 C)m=-1
D)=-32767
求解释
下面程序的输出结果是() void main() {unsigned m=32768; Printf(“m=%d\n”,m); } A)m=32768 B)m=32767
答案:6 悬赏:30
解决时间 2021-02-22 00:59
- 提问者网友:饮鸿
- 2021-02-21 00:14
最佳答案
- 二级知识专家网友:我颠覆世界
- 2021-02-21 00:47
根据题目的设计, 应该是16位机,即int占2字节.
这样 在赋值
m=32768=0x8000;
最高位为1
按照%d输出,会把最高位作为符号位,所以实际输出的是-32768
下面答案应该是打错了.
这样 在赋值
m=32768=0x8000;
最高位为1
按照%d输出,会把最高位作为符号位,所以实际输出的是-32768
下面答案应该是打错了.
全部回答
- 1楼网友:疯山鬼
- 2021-02-21 04:53
根据编译器不同,输出结果会有所不同。
- 2楼网友:冷态度
- 2021-02-21 03:19
A
- 3楼网友:萌萌哒小可爱
- 2021-02-21 02:45
这一题选A啊,就是定义了m=32768,再把它输出啊
- 4楼网友:悲观垃圾
- 2021-02-21 01:51
printf("%d /n",x--)输出的是x,然后才减去1,x是以整数输出的,而整数是以补码形式存放的,所以需要求出0xffff的原码,即0x8001,对应的二进制数的最高位是符号位1(表示是负数),也就是是-0x0001,对应的十进制数就是-1,所以就输出了-1。
- 5楼网友:丢不掉的轻狂
- 2021-02-21 01:32
A
因为无符号
所以应该是...
16位 1000000000000000=32768
有符号的话是32767至(-32768)
对吧.
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯