判断两个整数的大小

给定两个整数a,b,要求写程序输出其大小关系(a<b,a=b或者a>b)


(1)使用if、switch、关系运算符     (相信这个太有点小儿科吧)

c++实现如下:

void sizeRelation(const int& a,const int& b)

{

cout<<a;

if(a<b)

cout<<' < ' ;

}

else if(a>b)

{

cout<<' > ';

}

else

{

 cout<<' = ';

}

cout<<b<<"\n";

}


(2)不准用if、switch、以及三目运算符(? :),可以用比较运算符

void sizeRelation(const int& a,const int& b)

{

cout<<a;

(a<b)&&(cout<<' < ');//若a<b,这输出后面的   其他的两条语句不会输出

(a==b)&&(cout<<' = ');

(a>b)&&(cout<<' < ');

cout<<b<<"\n";

}

巧妙运用  逻辑与  (&&) 的短路思维。


(3)(对于正整数)不准用if、switch、、三目运算符(? :) 以及 比较运算法符

void sizeRelation(const int& a,const int& b)
{
char sign[]={'=','>','<'};
int sub=a-b;      //两数相减
int temp=sub&(0xFFFFFFFF);    //用于判断是否为0  若为0,下面的location必为0
int location=static_cast<int>((temp)&&(temp&(1<<31))))  //  取temp的符号位  看是否为正数或者负数

+static_cast<int>(temp&&(1));                  //将布尔型转换为正数型

//若temp为0,则location为0;temp为正,则location为1;temp为负,则location为2 

//依次输出如下
cout << a <<  " "<<   sign[location]   << " " << b <<"\n";
}

此方法只能比较两个正整数,对于一正一负,两数相减后有可能溢出。


对于一些奇葩的 面试题,一时想不出来,只能无语以对,有种被虐的感觉,事后再想想,也是一件快事。

以上是面试某公司时,碰到的第一题。


  • 0
    点赞
  • 1
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

打赏
文章很值,打赏犒劳作者一下
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页

打赏

zhangywlfh

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值