【问题标题】:I do not know how to evaluate an expression with two?我不知道如何用两个来评估一个表达式?
【发布时间】:2014-04-07 17:50:14
【问题描述】:

我不确定如何在 while 循环中计算这个表达式。我知道,当语句为真时,你做第一个,假的你做第二个,但是当有两个条件语句时我应该做什么让我感到困惑。

int x = 152487;
int ct1 = 0;
int ct2 = 0;

while(x > 0)
{ x % 2 ? x > 5 ? ct1++ : ct2++ : ct2++;

  x /= 10; 
}

printf("ct1: %d\n", ct1);
printf("ct2: %d\n", ct2);

【问题讨论】:

    标签: c


    【解决方案1】:

    给表达式加上括号,就清楚了。

    x % 2 ? (x > 5 ? ct1++ : ct2++) : ct2++;
    

    如果x 是奇数,则x % 2 的计算结果为true。这意味着上述表达式的值为

    (x > 5 ? ct1++ : ct2++)
    

    这又是一个条件表达式。如果x 是偶数,则表达式计算为

    ct2++
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-27
      • 2015-03-31
      • 1970-01-01
      • 2019-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-10
      相关资源
      最近更新 更多