加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

三目运算符详解

发布时间:2020-12-15 04:42:56 所属栏目:百科 来源:网络整理
导读:三目运算符详解 对于有些选择分支结构,可以使用简单的条件运算符来代替. 如: if(a ??? min=a; else ??? min=b; 可以用下面的条件运算符来处理 min=(a 其中 "(a 是一个 "条件表达式" ,它是这样执行的: 如果a 条件运算符由两个符号组成 "?"和":" ,要求有 3个

 三目运算符详解

  对于有些选择分支结构,可以使用简单的条件运算符来代替. 如:

  if(a???   min=a;  else???   min=b;

  可以用下面的条件运算符来处理

  min=(a

  其中"(a是一个"条件表达式",它是这样执行的: 如果a

  条件运算符由两个符号组成"?"和":",要求有3个操作对象,所以也叫它三目运算符,它是C语言中唯一的三目运算符.

    它的一般形式为:

       表达式1?表达式2:表达式3;

  以下是关于条件运算符的几点说明:

(1) 表达式1是关系表达式或逻辑表达式,用于描述条件,表达式2和表达式3可以是常量,变量或表达式.如:

      (x==y)?'Y':'N'      (d=b*b-4*a*c)>=0?sqrt(d):sqrt(-d)      ch=(ch>='A'&&ch<='Z')?(ch+32):ch

        以上均为合法的条件表达式.

(2) 执行顺序:先求解表达式1,若值为非0,表示条件为真,则求表达式2,此时表达式2的值就作为整个条件表达式的值;

      若表达式1的值为0,表示条件为假,则求解表达式3,表达式3的值就是整个条件表达式的值.例如:

        (a>=0)?a:-a?  执行结果是a的绝对值.

(3)?在程序中,通过把条件表达式的值直接赋予某个变量.例如:

        min=(a

(4)?条件表达式的优先级别仅高于赋值运算符,而低于前面遇到过的所有运算符.

        因此,min=(a

 

 ?

        x>0?1:x<0?-1:0

       上述条件表达式中,表达式3部分又是一个条件表达式.根据条件表达式的结合性,上述条件表达式等价于:

?        ?x>0?1:(x<0?-1:0)

       其作用是判断x的符号情况.当x为正数时,该条件表达式的值为1;当x为负数时,该条件表达式的值为-1;当x为0时,该条件表达式的值为0.

 ?

?        if(a%2==0)???         printf("even/n");        else???         printf("odd/n");

      不能写成:

?        (a%2==0)?printf("even/n"):printf("odd/n");

      但可以用下面语句代替:

?        printf("%s/n",(a%2==0?"even":"odd");

      该语句的作用是:若 a 为偶数,输出 even;若 a 为奇数,输出odd.

 

        main() {

          char c1,ch;

          ch = getchar();

          c1 = ch <= 'Z' && ch >= 'A' ? ' @ ' : ch ;

          putchar(c1);

        }

      该程序的作用是从键盘输入任意一个字符,判别它们是否大写字母,如果是,输出一个@;否则按原样输出 dot

      上例中,程序第6行是关键语句,该语句实现输入字符的判断,选择与更换工作.

      其执行过程为:先由此语句中的赋值号右侧的条件运算符对输入的字符进行判断和选择,若ch>='A'&&ch<='Z'成立,说明ch是大写英文字母,

      此时选@;否则仍选原字符ch,然后把选择的结果赋值给原变量ch 。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读