【问题标题】:is ternary operator usable for the following? [duplicate]三元运算符可用于以下情况吗? [复制]
【发布时间】:2015-07-03 16:09:50
【问题描述】:

只是想知道,对于以下代码行,是否可以使用三元运算符进行替换:

if( current->chbits[i] != '\0')
   printf("%c\n",current->chbits[i]);
else
   break;

如果是这样,我将如何正确解析它?

【问题讨论】:

  • 我相信你知道,break; 并不意味着else 条件,对吧?需要有一个封闭的循环。
  • 您的示例无法编译,请显示更完整的sn-p
  • 感谢您的快速跟进。我没有检查那个引用,因为它说“C++”。下次我会知道的。

标签: c break ternary-operator


【解决方案1】:

三元运算符中不能有break。

更多信息请参见this

【讨论】:

    【解决方案2】:

    三元运算符用于有条件地评估表达式

    result = condition ? first : second;
    

    在您的示例中,没有条件 expression,而是一个条件 statement

    【讨论】:

      【解决方案3】:

      是的,您可以将代码替换为三元运算符,方法是进行一些修改以消除break 语句。

      for(int i=0, int flag=1 ;flag!=0; i++){
          flag=(current->chbits[i]!='\0') ? printf("%c\n",current->chbits[i]) : 0;
      }
      

      这里flag 不会为零,因为printf() 返回成功写入输出的字符数。当current->chbits[i] != '\0' 变为假时,flag 设置为0 并且for 根据条件flag!=0 终止。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-05-11
        • 2013-04-28
        • 1970-01-01
        • 2015-04-27
        • 2016-08-22
        • 2020-03-05
        • 2021-04-19
        • 1970-01-01
        相关资源
        最近更新 更多