| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1174 人关注过本帖
标题:一道练习题:这是为什么?
只看楼主 加入收藏
M4orz3r
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2008-6-26
结帖率:100%
收藏
 问题点数:0 回复次数:14 
一道练习题:这是为什么?
例题如下:

main()
{
  unsigned x=1;
  signed char y=-1;
  if(x>y)
  printf("x>y");
  else
  printf("x<=y");
}

/* 结果输出为x<=y */

我想是无符号和有符号的区别.但仔细想下.unsigned 等于 unsigned int类型 So. 无符号的x在内存中存放的还是1阿.

char 默认就是有符号的 除非声明为无符号的.那么有符号的char 能存储的范围为-127~128.

不好意思,太急写错了。谢谢2楼的朋友提醒。已修改。

我想问的是 为什么定义了 unsigned x=1;  signed char y=-1;
x会小于y呢?

哪位朋友解答一下,不胜感激

[[it] 本帖最后由 M4orz3r 于 2008-10-31 18:40 编辑 [/it]]
搜索更多相关主题的帖子: 练习题 
2008-10-31 01:04
fantasy_______
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2008-9-21
收藏
得分:0 
x=y 是把y付给x  应该写成x==y
2008-10-31 09:32
M4orz3r
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2008-6-26
收藏
得分:0 
继续等答案.

骑着草泥马,玩着达菲鸡.专业俯卧撑,兼职打酱油.偶尔躲猫猫
2008-10-31 18:45
wcn1990
Rank: 1
等 级:新手上路
帖 子:13
专家分:3
注 册:2008-10-22
收藏
得分:0 
其实我认为这个问题涉及到负数的储存原理:负数在储存时为方便硬件设计 会将负数先取绝对值再取补码再加一储存 以便将减法转换成家法来做 所以你可以试试:
定义一个有符号整型数a=-1 用八进制或十六进制输出 就会发现a不等于-1了 而等于-1的绝对值的二进制补码加一后的二进制数 而这个数才是正真-1在内存中的显示方法所以a=1 二进制为00000001 而-1的二进制在内存中的显示为11111110 所以输出后-1大于1.
(上述纯属个人理解 如有错误或笔误之处 还望指正)
2008-10-31 20:15
嬿·嘄·骊·戨
Rank: 2
来 自:天府之国
等 级:论坛游民
帖 子:84
专家分:25
注 册:2008-10-16
收藏
得分:0 
哈哈```不用等拉``
我来告诉你吧```
有块东西叫```类型转换`
在类型转换头有个东西叫```整数提升`
当开始计算  x>y 的时候`
X和Y回被一起提升为int```

而有一个是无符号```所以结果都是无符号int

所以每个数的位回解释为全部的数值。

一个是0。。001
一个是1。。。1

也就是一个变成了1一个变成了UINT_MAX```

1当然<UINT_MAX

所以```回执行下面那句```

呵呵```怎么样``我很厉害吧```哈哈```
2008-10-31 20:25
iFreeBSD
Rank: 4
等 级:业余侠客
威 望:4
帖 子:474
专家分:236
注 册:2007-11-5
收藏
得分:0 
int , char 占用的字节数不同,int与char进行比较时涉及到符号扩展。

without further ado, let’s get started
2008-10-31 20:29
iFreeBSD
Rank: 4
等 级:业余侠客
威 望:4
帖 子:474
专家分:236
注 册:2007-11-5
收藏
得分:0 
[bo][un]嬿·嘄·骊·戨[/un] 在 2008-10-31 20:25 的发言:[/bo]

哈哈```不用等拉``
我来告诉你吧```
有块东西叫```类型转换`
在类型转换头有个东西叫```整数提升`
当开始计算  x>y 的时候`
X和Y回被一起提升为int```

而有一个是无符号```所以结果都是无符号int

所以每个 ...

最高位为1,表示负数,0.....1 > 1........1

without further ado, let’s get started
2008-10-31 20:32
嬿·嘄·骊·戨
Rank: 2
来 自:天府之国
等 级:论坛游民
帖 子:84
专家分:25
注 册:2008-10-16
收藏
得分:0 
讨厌``我都说好了````

都被转为摸的符号勒咯```还负撒子负哦``
2008-10-31 21:12
iFreeBSD
Rank: 4
等 级:业余侠客
威 望:4
帖 子:474
专家分:236
注 册:2007-11-5
收藏
得分:0 
[bo][un]嬿·嘄·骊·戨[/un] 在 2008-10-31 21:12 的发言:[/bo]

讨厌``我都说好了````

都被转为摸的符号勒咯```还负撒子负哦``


你成都哪的???

without further ado, let’s get started
2008-10-31 21:21
嬿·嘄·骊·戨
Rank: 2
来 自:天府之国
等 级:论坛游民
帖 子:84
专家分:25
注 册:2008-10-16
收藏
得分:0 
你股哈撒```
2008-10-31 21:24
快速回复:一道练习题:这是为什么?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013415 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved