qq_43412960
2019-10-27 19:08
采纳率: 79.1%
浏览 444

这个一个关于C语言 的三目运算符和选择结构的问题

三目运算符大大减少了代码量,他和选择结构一样吗?
是不是所有的选择结构都可以转换成三目运算呢?
请大佬们帮忙解答一下

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • threenewbee 2019-10-27 22:21
    已采纳
    首先要纠正一下,?:是三目运算符(拥有三个操作数(oprand))没错,但是三目运算符不是?:
    好比! ~ ++ -- 是单目运算符,+ - * / && || 是双目运算符,虽然似乎c语言的三目运算符只有?:,但是不能把?:叫做三目运算符。你可以叫它条件赋值运算符。
    
    理论上来说,因为c语言支持函数指针,的确if else可以用条件赋值运算符实现,也就是要执行的两个分支分别定义为两个函数,用条件赋值运算符根据条件,让指针指向两个函数的的地址,再调用。而switch...case可以用多个条件赋值运算符级联实现。
    
    打赏 评论
  • 科恩大帝 2019-10-27 20:40

    他和选择结构不同,这么说吧,三目运算符其实就是if,else结构的简单化。

        int a=1;
    
        if(a==1){
            cout<<"1"; 
        }else{
            cout<<"0";
        }
    
        a==1 ?cout<<"1": cout<<"0";
    
    

    而选择结构则不同,能够对同一个变量的不同情况进行不同的操作。

        switch (a){
        case 1:
            cout<<"1";
            break;
        case 3:
            cout<<"3";
            break;  
        }
    
    

    至于使用if,else if,else if...else的结构,也可以达到相类似的目的,单是代码量就会更大了

    打赏 评论
  • 君子黎 2019-10-27 20:48

    三目运算用一行代码显示,如果判断只有一个,看起来会比if-else多行舒服。如果有很多格判断的时候,三目就不方便写,
    而且可读性就不如if-else了,修改起来也会不方便。并且当我们的判断逻辑复杂一些,或者判断以后,不仅仅用来赋值的时候,
    if-else的作用是三目运算符完全不可以替代的。即三目运算符实现不了该功能。
    三目运算符常用在赋值时候,比如:int a = b?1:0; //表示如果b为真(大于0或是小于0),则a = 1; 反之a = 0; 如果要用选择分支,

    if(b) a = 1
    else a = 0;
    
    

    所以并不是所有的选择结构都可以转换成三目运算。

    打赏 评论
  • wisepragma 2019-10-27 21:45

    三目运算符判断执行,最后是要返回结果,而其他两种没有,有时候这个会影响计算性能.

    打赏 评论

相关推荐 更多相似问题