| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5198 人关注过本帖
标题:无符号数和有符号数的比较
只看楼主 加入收藏
cxlttt
Rank: 1
等 级:新手上路
帖 子:16
专家分:7
注 册:2010-3-28
结帖率:66.67%
收藏
 问题点数:0 回复次数:4 
无符号数和有符号数的比较
void main()
{
    short sdata1=-1;
    unsigned short sdata2=1;
   
   
    int data1=-1;
    unsigned int data2=1000;


    if(sdata1>sdata2)
    {
       printf("1");   
    }
    else
    {
       printf("2");   
    }

    printf("\n");
   
    if(data1 > data2)
    {
       printf("1");   
    }
    else
    {
       printf("2");   
    }


}


输出 的为什么 是  2    1 啊?这个是怎么比较的?
搜索更多相关主题的帖子: 符号 
2011-03-23 21:23
我是传奇
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:88
专家分:109
注 册:2011-3-21
收藏
得分:0 
void main()
{
    short sdata1=-1;
    unsigned short sdata2=1;
   
   
    int data1=-1;
    unsigned int data2=1000;<-----


    if(sdata1>sdata2)
    {
       printf("1");   
    }
    else
    {
       printf("2");   
    }

    printf("\n");
   
    if(data1 > data2)
    {
       printf("1");   
    }
    else
    {
       printf("2");   
    }


}

刚才试了一下问题出在这就是定义的类型,改为int 后输出为2 2
2011-03-23 22:33
我是传奇
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:88
专家分:109
注 册:2011-3-21
收藏
得分:0 
void main()
{
    short sdata1=-1;
    unsigned short sdata2=1;
   
   
    int data1=-1;
    unsigned int data2=1000;//问题出在这里


    if(sdata1>sdata2)
    {
       printf("1");   
    }
    else
    {
       printf("2");   
    }

    printf("\n");
   
    if(data1 > data2)
    {
       printf("1");   
    }
    else
    {
       printf("2");   
    }


}

2011-03-23 22:34
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
收藏
得分:0 
在c语言中有一个规则就是:int类型的数据与unsigned int类型的数据进行比较时会把int类型的数据转换为unsigned int 类型的数据,然后再进行比较。

int data1 = -1 转换为unsigned int类型的数据为:4394967295, 这个数肯定要 > 1000 ,因此第二个会输出1

愿用余生致力编程
2011-03-25 09:32
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:0 
以下是引用我菜119在2011-3-25 09:32:28的发言:

在c语言中有一个规则就是:int类型的数据与unsigned int类型的数据进行比较时会把int类型的数据转换为unsigned int 类型的数据,然后再进行比较。

int data1 = -1 转换为unsigned int类型的数据为:4394967295, 这个数肯定要 > 1000 ,因此第二个会输出1


学习!!!

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-03-25 10:11
快速回复:无符号数和有符号数的比较
数据加载中...
 
   



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

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