我听说过一种在C语中使用?
和:
的If语句
我不知道如何使用它,我无法找到任何关于它。
我需要使用它来缩短我的代码
任何帮助将不胜感激。
答案 0 :(得分:11)
?:
是ternary operator(也称为条件运算符)。您可以缩短代码,如
if(condition)
expr1;
else
expr2;
到
condition ? expr1 : expr2;
了解它的工作原理:
评估第一个操作数;它的评价和评价之间有一个序列点 评估第二或第三操作数(以评估者为准)。第二个操作数 仅当第一个比较不等于
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" );