为了账号安全,请及时绑定邮箱和手机立即绑定

输入短整型数,比较对应的无符号数的大小,输出最大值最小值

输入短整型数,比较对应的无符号数的大小,输出最大值最小值

C
qq_nanranlanW_0 2017-03-07 20:53:08
从键盘上输入三个短整型数,分别存放到a、b、c中,求这三个数中最大的无符号数和最小无符号数及其对应的输入值。#include<stdio.h>void main(){    short int a,b,c;    unsigned int max,min;    scanf("%d %d %d",&a,&b,&c);    a=(unsigned int)a;    b=(unsigned int)b;    c=(unsigned int)c;    if(a>b){        max=a;        min=b;    }    else{        max=b;        min=a;    }    if(c>max){        max=c;    }    else if(c<min){        min=c;    }    printf("%u unsigned max:%u   unsigned min: %u\n",a,max,min);    printf("max(input):%d     min(input):%d\n",max,min);}输入-1 -2 5输出unsigned max:5   unsigned min: 4294967295max(input):5     min(input):-1我觉得很奇怪为什么实际上5对应的无符号数应该是最小的才对,-1才是最大的,输出出来为什么正好相反??我觉得是不是跟我的变量定义有关?max=c,c为无符号数,max为有符号数,两者是怎么比较的啊??
查看完整描述

3 回答

?
八神花露水

TA贡献35条经验 获得超103个赞

谁跟你说-1转换为无符号整数是取它的补码的,2^32+(-1)才是转换后的结果。转换后又用short int接收这么大的值,肯定又转成负数了,之后你又以无符号整数形式 %u 打印负数,当然结果会变得很奇怪。不要给自己设坑,把里面的 short int 全部改为 int 结果应该就正常了。

查看完整回答
反对 回复 2017-03-07
?
雪颲

TA贡献220条经验 获得超117个赞

无符号是什么意思你没搞清楚

查看完整回答
反对 回复 2017-03-07
  • qq_nanranlanW_0
    qq_nanranlanW_0
    无符号就是unsigned吧,比如-1的补码和65535一样,所以变成unsigned的时候就是65535,可以说下我错在哪吗?
  • 3 回答
  • 0 关注
  • 2563 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信