下面程序的输出是( ) main( ) { unsigned a=32768; printf("a=%d\n", a); } 运行结果: -32768 A)a=-32768
答案:4 悬赏:50 手机版
解决时间 2021-11-19 09:41
- 提问者网友:謫仙
- 2021-11-19 01:49
下面程序的输出是( ) main( ) { unsigned a=32768; printf("a=%d\n", a); } 运行结果: -32768 A)a=-32768
最佳答案
- 五星知识达人网友:渊鱼
- 2021-11-19 02:41
你这是十六位机上的情况。在十六位机上unsigned的范围是0~65535,而 printf("a=%d\n", a)中的%d却要求要将a按带符号整型数输出,32768的无符号二进制数是1000 0000 0000 0000,刚好是带符号数-32768的补码,所以答案是A)。现在的int类型已扩展到32位了,出现这种情况要在十进制十位以后……
全部回答
- 1楼网友:雾月
- 2021-11-19 04:06
32768。unsigned int 范围16位的是0-65535
楼上的给的百科自己也仔细看一下嘛,而且都说是unsigned 既然是无符号,怎么可能还带正负号
楼上的给的百科自己也仔细看一下嘛,而且都说是unsigned 既然是无符号,怎么可能还带正负号
- 2楼网友:蓝房子
- 2021-11-19 03:12
vc++2010下
#include "stdafx.h"
int main()
{
unsigned short us=32768;
printf("%hd ",us);
printf("%d ",us);
return 0;
}
打印结果为:-32768和32768.
%hd表示按照有符号short(-32768~+32767)类型输出,有符号的short整数32768是个负数
%d表示按照有符号int(现在的机器和编译器大都把int看成4字节)类型输出,有符号的int整数32768是个正数
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯