ppts.net
当前位置:首页>>关于下面程序的输出是( ) main( ) { unsigned a=32768;...的资料>>

下面程序的输出是( ) main( ) { unsigned a=32768;...

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

这要根据不同的编译器; 有些编译器上无符号整型是2字节16位,VC6.0是4字节32位; 如果是在2字节16位的编译器上的话: %d表示的是有符号输出,它不管你的变量是有符号还是无符号的 面%u是无符号整型输出的正确方法 所以,上面的输出是一个负数,...

根据题目的设计, 应该是16位机,即int占2字节. 这样 在赋值 m=32768=0x8000; 最高位为1 按照%d输出,会把最高位作为符号位,所以实际输出的是-32768 下面答案应该是打错了.

a=32768 unsigned是unsigned int的缩写,意思是无符号整型。也就是说a不存在负数,那么a的范围就扩大了,最大值为2^8-1

short只有两字节空间. 最高位为符号位. 赋值a=32768=0x8000 最高位为1, 代表负值. a实际值为-32768(补码转换) 当%d输出时,转为int型 还是-32768 所以输出就是这个值了.

int型范围为-32768-32767,a的32768赋值给int型的b时候超过范围了,输出的可能是乱码或者-1。

请问你用的是什么样的编译器: 我用的是MS-VS05.此时 由于unsigned short 表示的数值范围为 0~65535。它占用两个字节16位,并不会截断。 结果如下: 32768 请按任意键继续. . . 解释如下: 32768的二进制补码为: 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0...

#include void main() { unsigned a=32768 ; printf("a=%d\n",a) ; } 首先你的代码有些问题:1、头文件stdio.h必须引入,2、语句结尾少分号。 运行结果:32768 运行环境: Windowsxp sp3 en,MS VC++ 6.0 解释:unsigned 4字节,最大可表示数字429...

TC上是-1 VC上是32768 因为unsigned的32768在内存中存的是10000000 00000000,在用%d输出的时候,会把这个数认为是一个int型有符号数,而int型有符号数中只有-1在内存中也是10000000 00000000。所以是-1 而在VC上,32768是00000000 00000000 100...

看编译器吧,如果sizeof(unsigned int)为2个字节的话,输出32768,如果是四个字节,那么就输出4294934528

网站首页 | 网站地图
All rights reserved Powered by www.ppts.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com