zgfp.net
当前位置:首页 >> unsignED32768 >>

unsignED32768

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

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

main() {unsigned a=32768; //unsigned存储的数据范围是0~65535 int b; b=a; printf("b=%d\n",b); //所以结果是 32768 }

在TC2.0环境下是a=-32768,因为这个环境int是占两个字节,以补码形式存放,最高位是符号位,范围是32767~-32768,a=32768在计算机中存储为1000000000000000,高位是1,所以为负数,而 -32768的补码形式就是1000000000000000。

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

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

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

a本来是32位,返回a的在高16位中除了符号位之外的15位(除去符号位)。 a/65535(等价于a/2^16),即右移16位,高位补上符号位。 再继续%32768(等价于%2^15),即取低15位,不包括符号位。 然后来个类型转换,去掉符号位(其实不需要类型转换已经可...

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

在short(2个字节)中1000000000000000就是-32768的补码 计算机是按补码来存放和解释二进制数的!

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