我不知道如何评估两个表达式?

时间:2014-04-07 17:50:14

标签: c

我不确定如何在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);

1 个答案:

答案 0 :(得分:4)

对表达式进行括号化,它将很清楚。

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

如果x为奇数,则x % 2评估为true。这意味着上面表达式的值是

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

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

ct2++