鱼C论坛

 找回密码
 立即注册
查看: 1297|回复: 4

请问char 与 unsigned char 在内存单元中怎样存放?

[复制链接]
发表于 2016-6-6 13:13:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 xurui71 于 2016-6-6 13:19 编辑

很久没有用调试工具,现在不会用了,所以来请教一下。。
    char a ;
    unsigned char b;

   a = 127;//请问这时a放在内存单元是怎样的?
   a = a+1;//请问这时a放在内存单元是怎样的?
   
   b = 127;//请问这时b放在内存单元是怎样的?
   b = b+1;//请问这时b放在内存单元是怎样的?

还有请问,上面的那个是不是与编译器的不同。。存放结果又会不一样呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-6-6 16:30:57 | 显示全部楼层
6666666666666666同问
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-6-6 22:19:22 | 显示全部楼层
    首先在机器里的存储是用补码的:正数的补码就是原码,也就是二进制表示的形式.127:0111 1111;负数的补码是把对应的正数原码取反再加1,-127:   0111 1111取反1000 0000再加1就是 1000 0001;在内存中的数据的存储是有两种方式大端和小端,大部分是小端,当然也有使用大端的.小端就是说把数据的高位放在内存的低位,在这里我们说一下内存的高低,内存从0x0000 0000开始的所以靠近这边的为高位.
     char就一个字节八位,放进没什么区别,127就是 0111 1111或者0x 7f   当它加1后数据会溢出出现的是一个乱码,如果写得有保护的话应该是一个特定的值在那里.
     unsigned char 他与char的区别是第一位也表述数据而非符号0-255,那么127 就是0111 1111或者0x 7f 当它加1后就是128,表示出来1000 0000或者0x 80 就是这样没有什么大的区别,因为正数的补码还是原来的.
     他们的表示与编译器无关但是与机器有关......
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2016-6-6 23:02:18 | 显示全部楼层
大神啊。。。可伶我还是没毕业的小白。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-6-7 16:27:34 | 显示全部楼层
直接去看一下源码,补码,反码。就知道啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-27 04:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表