如果声明?并且:

时间:2014-01-02 16:16:50

标签: c ternary-operator

我听说过一种在C语中使用?:的If语句 我不知道如何使用它,我无法找到任何关于它。 我需要使用它来缩短我的代码 任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:11)

C中的{p> ?:ternary operator(也称为条件运算符)。您可以缩短代码,如

if(condition)
    expr1;
else
    expr2;  

condition ? expr1 : expr2;   

了解它的工作原理:

C11:6.5.15条件运算符:

  

评估第一个操作数;它的评价和评价之间有一个序列点   评估第二或第三操作数(以评估者为准)。第二个操作数   仅当第一个比较不等于0时才进行评估;仅当第一个操作数比较等于0时才评估第三个操作数;结果是第二个或第三个操作数的值   (无论哪个评估),

答案 1 :(得分:3)

正如其他人所提到的,它被称为三元运算符。但是,如果您不知道这一点,那么直接谷歌会有点困难,因为谷歌不能很好地处理标点符号。幸运的是,StackOverflow自己的搜索处理引号中的标点符号就是这种情况。

This search会产生你想要的答案。或者,您可以在Google上搜索“c中的问号和冒号”,拼写出标点符号的名称。

答案 2 :(得分:0)

首先你有条件吗?

然后你的表达式为TRUE吗?并且:

然后你的表达式为FALSE:

这样的事情:

(1 != 0) ? doThisIfTrue : doThisIfFalse

答案 3 :(得分:0)

三元运算符?:是最小化if语句,可以减少这种情况:

if(foo)
    exprIfTrue();
else
    exprIfFalse();

对此:

(foo) ? exprIfTrue() : exprIfFalse() ;

就个人而言,我避免使用它,因为它很容易变得不可读。使用的唯一好例子是在printf

中显示标志的状态
int my_flag = 1;

printf("My flag: %s\n", my_flag ? "TRUE" : "FALSE" );