C 如果声明中有?以及:

C 如果声明中有?以及:,c,ternary-operator,C,Ternary Operator,我听说过一种If语句,它在C中使用?和: 我不知道如何使用它,也找不到任何关于它的东西。 我需要使用它来缩短我的代码 任何帮助都将不胜感激。?:是C语言(也称为条件运算符)。您可以像这样缩短代码 if(condition) expr1; else expr2; 到 看看它是如何工作的: C11:6.5.15条件运算符: 计算第一个操作数;在其评估和测试之间有一个序列点 计算第二个或第三个操作数(以计算值为准)。第二个操作数 仅当第一个比较结果不等于0时,才进行计算;仅当第一

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

?:
是C语言(也称为条件运算符)。您可以像这样缩短代码

if(condition)
    expr1;
else
    expr2;  

看看它是如何工作的:

C11:6.5.15条件运算符: 计算第一个操作数;在其评估和测试之间有一个序列点 计算第二个或第三个操作数(以计算值为准)。第二个操作数 仅当第一个比较结果不等于
0
时,才进行计算;仅当第一个操作数的比较值等于
0
时,才计算第三个操作数;结果是第二个或第三个操作数的值 (以被评估者为准)


首先你在手术前有过这种情况吗

那么你有表示真与假之间的表达式吗?以及:

然后,在以下情况下,您将得到FALSE的表达式:

大概是这样的:

(1 != 0) ? doThisIfTrue : doThisIfFalse

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


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

三元运算符
?:
是一个最小化
if
语句,它可以减少:

if(foo)
    exprIfTrue();
else
    exprIfFalse();
为此:

(foo) ? exprIfTrue() : exprIfFalse() ;
就我个人而言,我避免使用它,因为它很容易变得不可读。使用的唯一好例子是在
printf
中显示标志的状态:

int my_flag = 1;

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

它被称为三元运算符——这应该给你足够的时间来谷歌itI,我看不出有理由否决这个问题。阿门清楚地说了他想要什么,为什么他想要它,否则他找不到答案。至少帮他找到答案,如果你键入“?”和:在谷歌的“c”中,你可以在维基上找到“c”中的操作员。你可以在那里找到它。@Koushik如果你在google中键入
“?和:在c”
中过滤掉标点符号,你会得到一个看起来像
”的搜索结果,在c”
@Koushik中,我的google搜索结果的第一页中没有一个与三元运算符有关。我想这取决于你的个性化结果。
int my_flag = 1;

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