unsigned int 与 int 类型数据在内存中存储形式

xxc028 2008-02-28 03:06:33
请看下面两段代码
1 int 类型
int c;
c=-1;
printf("c=%d\n",c);
printf("c=%u\n",c);
输出的结果是 :
c=-1; c=65535

2 类型
unsigned int c;
c=-1;
printf("c=%d\n",c);
printf("c=%u\n",c);
输出的结果是 :
c=-1; c=65535

问题是 -1 赋值给 int 类型的时候 存储形式为 1111,1111,1111,1111
依据运行结果 -1 赋值给 unsigned int 类型的时候 存储形式也是为 1111,1111,1111,1111
只是输出结果中输入形式控制 它的显示值 ;所以用int 与unsigned int 存储形式是相同的,很多时候作用也一样 个人理解 不知道大家都什么不同意见
...全文
1079 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
feng0906 2008-02-29
  • 打赏
  • 举报
回复
int 与unsigned存储形式一样,都是补码形式,区别在于输出的格式控制符,当以%d输出,会认为是有符号数,这样就把最高位的1当成了符号位,也就是负数(0是正数),当以%u输出,会认为是无符号数,这样它会将所有16位的组成都看成是数本身的组成,而没有符号位一说,所以输出结果是由16个1组成的二进制数,转换成10进制就是65535
iambic 2008-02-28
  • 打赏
  • 举报
回复
计算机当然识01。
ndking 2008-02-28
  • 打赏
  • 举报
回复
是一样的
说句实话
计算机根本不会分什么语言
就连 0 1也不认识
只有电压有无
从物理角度就是非门
这些东西都是人为了方便想象出来的
sheenl 2008-02-28
  • 打赏
  • 举报
回复
turbo c? 扔了吧。
32位系统上, -1可大了。
chlaws 2008-02-28
  • 打赏
  • 举报
回复
看你输出类型了。
储存还是二进制的储存
0黄瓜0 2008-02-28
  • 打赏
  • 举报
回复
一样的内存bit,取决于你怎么去解释它.
同样是二进制1111,1111,1111,1111 ,
如果你或程序逻辑中认为它是无符号数,它就是65535,
如果你或程序逻辑中认为它是2字节有符号数,它就是-1,
cnzdgs 2008-02-28
  • 打赏
  • 举报
回复
CPU在处理数据时是不区分unsigned int和int,只有高级语言中才会区分。
lunarfan 2008-02-28
  • 打赏
  • 举报
回复
一样的~~~
unsigned int c;
c=-1;
什么逻辑?实际问题会用到如此的赋值么
mymtom 2008-02-28
  • 打赏
  • 举报
回复
存储是一样的.
区别还在于比较大小时
比如:
int i, j;
unsigned int m, n;

i = 0x80000000;
j = 1;

m = 0x80000000;
n = 1;

i > j 返回false
m > n 返回true
  • 打赏
  • 举报
回复
一样
区别在于你是如何输出他的。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧