计算机系统基础无符号短整型,输入短整型数,比较对应的无符号数的大小,输出最大值最小值...

这篇博客探讨了在C语言中,将有符号整数转换为无符号整数进行比较时出现的反常现象。作者通过代码展示了当输入-1和-25时,预期最大无符号数应该是-1,最小是5,但实际输出结果相反。问题出在有符号数转换为无符号数时的溢出和比较逻辑。博客分析了这种错误的原因,并强调了类型转换和比较操作的注意事项。
摘要由CSDN通过智能技术生成

从键盘上输入三个短整型数,分别存放到a、b、c中,求这三个数中最大的无符号数和最小无符号数及其对应的输入值。

#include

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=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: 4294967295

max(input):5     min(input):-1

我觉得很奇怪为什么实际上5对应的无符号数应该是最小的才对,-1才是最大的,输出出来为什么正好相反??

我觉得是不是跟我的变量定义有关?max=c,c为无符号数,max为有符号数,两者是怎么比较的啊??

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值