当前位置: 代码迷 >> C语言 >> [求助]32768赋为int unsigned char和signed char型变量,赋值后它在内存中的 ...
  详细解决方案

[求助]32768赋为int unsigned char和signed char型变量,赋值后它在内存中的 ...

热度:740   发布时间:2007-03-16 15:07:00.0
[求助]32768赋为int unsigned char和signed char型变量,赋值后它在内存中的存储形
将-32769和32769分别赋为int unsigned char和signed char型变量,赋值后它们在内存中存储的二进制是什么样的?怎么算出的 麻烦讲解一下
32769超出了int的范围 将怎么在内存中存储?
若要以%d形式输出会输出什么?以%c呢?

刚刚学 不明白 希望学过的能说一下其中的转换过程 谢谢!
搜索更多相关的解决方案: 内存  赋值  int  char  变量  

----------------解决方案--------------------------------------------------------
超过位数截取.
----------------解决方案--------------------------------------------------------
能说明白点吗?
----------------解决方案--------------------------------------------------------

只举一个例子32769
32769转换为二进制数为1000000000000001(共十六位),即为其原码,由于是正数,存在内在中的时候就会原样放入

用%d输出的时候,就会去读取内存,由于最高位是1,就会认为是负数,会将其转换为相应的原码(减1再取反)
也就是0111111111111111,再转换为十进制数就是32767,由于是负数,就会输出-32767.如果用%ld输出,不同的编译器会得到不同的结果,这个地方就不说了


----------------解决方案--------------------------------------------------------

谢谢


----------------解决方案--------------------------------------------------------
如果将一个大于255 和负数以%c形式输出会得到什么结果那?怎样得到的?
----------------解决方案--------------------------------------------------------
可能会什么都不输出,因为找不到这个ASCLL码对应的字符
----------------解决方案--------------------------------------------------------

知道了 那如果一个足够大的数 99999999转换为2进制 超过16位 但把他定义为INT型时 是截取前16位还是后16位


----------------解决方案--------------------------------------------------------
后16位
----------------解决方案--------------------------------------------------------
以下是引用PcrazyC在2007-3-16 17:20:47的发言:
可能会什么都不输出,因为找不到这个ASCLL码对应的字符

应该会截取低八位输出.
----------------解决方案--------------------------------------------------------

  相关解决方案