下面程序的输出是( ) main( ) { unsigned a=32768; printf("a=%d尀n", a); } 运行结果: -32768 A)a=-32768

2024-11-24 09:15:06
推荐回答(4个)
回答1:

vc++2010下

#include "stdafx.h"

int main()

{

unsigned short us=32768;

printf("%hd\n",us);

printf("%d\n",us);

return 0;

}

打印结果为:-32768和32768.

%hd表示按照有符号short(-32768~+32767)类型输出,有符号的short整数32768是个负数

%d表示按照有符号int(现在的机器和编译器大都把int看成4字节)类型输出,有符号的int整数32768是个正数

回答2:

你这是十六位机上的情况。在十六位机上unsigned的范围是0~65535,而 printf("a=%d\n", a)中的%d却要求要将a按带符号整型数输出,32768的无符号二进制数是1000 0000 0000 0000,刚好是带符号数-32768的补码,所以答案是A)。现在的int类型已扩展到32位了,出现这种情况要在十进制十位以后……

回答3:

32768。unsigned int 范围16位的是0-65535
楼上的给的百科自己也仔细看一下嘛,而且都说是unsigned 既然是无符号,怎么可能还带正负号

回答4:

unsigned int 类型取值范围为-32768~32767