c语言中比较两个数的大小及比较三个数的大小

方法1:使用if-else比较

if(a>=b)
   c = a;
else 
   c = b;

方法2:使用条件运算符比较

c = a>=b?a:b;

总结:

1)唯一的三目运算符(条件运算符)可以用来获得两个数中最大或最小的那个数。形式上更加简洁。

2)条件表达式的本质就是if-else。冒号:后的值就是else语句

举例1:条件运算符的嵌套:

c = a>b?2:a==b?1:0;

当a>b时,c = 2;

当a==b时,c = 1;

当a<b时,c=0;

if(a>b)
    c = 2;
else if(a == b) //此处else相当于第一个冒号
        c = 1;
    else        //此处else相当于第二个冒号
        c = 0;

举例2-1:求3个数中最大的数

a,b,c三个数,求最大值

扫描二维码关注公众号,回复: 14259296 查看本文章
if(a>=b)//比较a和b,最大值赋给m
  m = a;
else
  m = b;

if(a>=c)//比较a和c,最大值赋给n
  n = a;
else
  n = c;

if(m>=n)//比较m和n,获得最大值
  max = m;
else
  max = n;

 等价于以下条件表达式:

m = a>=b?a:b;
n = a>=c?a:c;
max = m>=n?m:n;

又可以写成

举例2-2:求3个数中最大的数

if(a>=b)//比较a和b,最大值赋给m
  m = a;
else
  m = b;

if(a>=c)//比较a和c,最大值赋给n
  n = a;
else
  n = c;

if(b>=c)//比较b和c,获得最大值
  max = m;
else
  max = n;

 等价于条件表达式

max = b>=c?a>=b?a:b:a>=c?a:c;
//max = b>=c?(a>=b?a:b):(a>=c?a:c);

分析:显示2-2方法更简洁,思路分析:

a与b比较:m为二者最大值;

a与c比较:n为二者最大值;

b与c比较:若b>=c,则m为最大值(如m=a,则a>=b>=c;如m=b,则b>=a,且b>=c);

                  若b<c,则n为最大值(如n=a,则,b<c,c<=a,即b<c<=a;如n=c,则a<c且b<c)。示意图如下:

 其实,2-2的程序写成如下更贴切:

if(b>=c)        //以任意两值比较,
 {
    if(a>=b)    //第3个值与最大值b进行比较 //if-else对应第一个括号的内容,即冒
        max = a;    //号前的内容
    else
        max = b;
}else{            //b<c的情况
    if(a>=c)      //第3个值与最大值c进行比较//if-else对应第二个括号中的内容,即
        max = a;  //冒号后的内容
    else
        max = c;
}


总结:三目表达式?:的理解

?前的内容是if中的内容;

:代表else

:前的内容是if语句;

:后的内容是else语句。

猜你喜欢

转载自blog.csdn.net/modi000/article/details/104232104