从if else变为三元运算符

hqt*_*hqt 0 c if-statement

这是正常的代码:

       if(a==b)
            printf("equal");
        else if(a>b)
            printf("bigger");
        else
            printf("smaller");
Run Code Online (Sandbox Code Playgroud)

我的老师想要改变if/else这个结构:

printf("%s",a>b?"bigger":"smaller")
Run Code Online (Sandbox Code Playgroud)

当然,这只是一个简单而标准的.我不知道如何将其应用于上面的代码来替换if/else.

Mar*_*ers 9

使用嵌套条件运算符通常不是一个好主意,但可以这样做:

printf("%s", a==b ? "equal" : (a > b ? "bigger" : "smaller"));
Run Code Online (Sandbox Code Playgroud)

  • 这并不是说我为他完成了整个家庭作业.在老师告诉他改写他(已经是正确的)代码的一部分之后,看起来他自己有99%的方式在那里得到了帮助.我不明白为什么提出这个问题或直接回答它是一个问题. (4认同)

zel*_*lio 5

你的老师告诉你使用三元运算符.

// Generally it looks like this 
( predicate ) ? If_True : If_False ;
Run Code Online (Sandbox Code Playgroud)

操作符可以自行堆叠(使用括号语句)来生成更复杂的逻辑.

( predicate_0 ) ? If_True : ( ( predicate_1 ) ? If_True : ... )) ;
Run Code Online (Sandbox Code Playgroud)

虽然通常以这种方式堆叠三元运算符会使代码更难以阅读.在大多数情况下,你最好使用if ... else