如果c中的短语法

时间:2012-01-08 13:19:13

标签: c ternary-operator conditional-operator

我知道如果可以用c语言写短语法 请告诉我如何

   if arraeck(a, n) ?    printf("YES")    printf("NO");

这样的事情?...在​​一行...... 什么是正确的语法 ?

4 个答案:

答案 0 :(得分:17)

直接翻译示例代码:

 arraeck(a, n) ? printf("YES") : printf("NO");

甚至更短:

 printf(arraeck(a, n) ? "YES" : "NO");

这被称为(ternary) conditional operator ?:,它并不总是使用它的最佳解决方案,因为它很难阅读。如果您需要条件的结果,通常只使用它,就像在第二个代码示例中一样(运算符在此处求值为"YES""NO")。

在第一个示例中,运算符不用作表达式,因此最好使用显式的if(毕竟不是那么长):

if (arraeck(a, n))
    printf("YES");
else
    printf("NO");

答案 1 :(得分:6)

?:不等同于if:后者是一个陈述,但前者是一个表达式。

你可以这样做:

arraeck(a, n) ? printf("YES") : printf("NO");

但风格很糟糕。

您也可以

str = arraeck(a, n) ? "YES" : "NO";
printf(arraeck(a, n) ? "YES" : "NO");

但你不能写

str = if (arraeck(a, n)) "YES"; else "NO";
printf(if (arraeck(a, n)) "YES"; else "NO");

答案 2 :(得分:3)

if (cond) {
    exp1;
} else {
    exp2;
}

可以写成

cond ? exp1 : exp2;

此表单通常用于此类条件赋值(来自Wikipedia entry of ?:):

variable = condition ? value_if_true : value_if_false

答案 3 :(得分:2)

printf(arraeck(a,n) ? "YES" : "NO");