【问题标题】:IF short syntax in c [closed]c中的IF短语法[关闭]
【发布时间】:2012-02-05 08:44:08
【问题描述】:

我知道 if 可以用 c 中的简写语法写成 请告诉我怎么做

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

像这样的东西?...在​​一行中... 什么是正确的语法 ?

【问题讨论】:

  • 您是指?: 运算符吗?它的语法是 conditionexpression_if_true : expression_if_false.

标签: c ternary-operator conditional-operator


【解决方案1】:

直接翻译您的示例代码:

 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");

【讨论】:

    【解决方案2】:

    ?:不等于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");
    

    【讨论】:

      【解决方案3】:
      if (cond) {
          exp1;
      } else {
          exp2;
      }
      

      可以写成

      cond ? exp1 : exp2;
      

      这种形式通常用于这样的条件赋值(来自Wikipedia entry of ?:):

      variable = condition ? value_if_true : value_if_false
      

      【讨论】:

        【解决方案4】:
        printf(arraeck(a,n) ? "YES" : "NO");
        

        【讨论】:

          猜你喜欢
          • 2012-04-06
          • 2016-09-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-12-08
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多