如果c中的短语法

Blo*_*y21 7 c ternary-operator conditional-operator

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

   if arraeck(a, n) ?    printf("YES")    printf("NO");
Run Code Online (Sandbox Code Playgroud)

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

Nik*_* B. 20

直接翻译您的示例代码:

 arraeck(a, n) ? printf("YES") : printf("NO");
Run Code Online (Sandbox Code Playgroud)

甚至更短:

 printf(arraeck(a, n) ? "YES" : "NO");
Run Code Online (Sandbox Code Playgroud)

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

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

if (arraeck(a, n))
    printf("YES");
else
    printf("NO");
Run Code Online (Sandbox Code Playgroud)


tas*_*oor 8

if (cond) {
    exp1;
} else {
    exp2;
}
Run Code Online (Sandbox Code Playgroud)

可以写成

cond ? exp1 : exp2;
Run Code Online (Sandbox Code Playgroud)

这种形式通常用于像这样的条件赋值(来自?: 的维基百科条目):

variable = condition ? value_if_true : value_if_false
Run Code Online (Sandbox Code Playgroud)


Ama*_*dan 6

?:不等同于if:后者是一种陈述,但前者是一种表达.

你可以做:

arraeck(a, n) ? printf("YES") : printf("NO");
Run Code Online (Sandbox Code Playgroud)

但这是不好的风格.

你也可以

str = arraeck(a, n) ? "YES" : "NO";
printf(arraeck(a, n) ? "YES" : "NO");
Run Code Online (Sandbox Code Playgroud)

但你不能写

str = if (arraeck(a, n)) "YES"; else "NO";
printf(if (arraeck(a, n)) "YES"; else "NO");
Run Code Online (Sandbox Code Playgroud)