C三元:做两件不同的事

时间:2014-10-13 13:52:10

标签: c ternary

我问自己是否有可能这样做:

condition ? do this && THIS : else;

喜欢:

nb = (nb1 + nb2) > 9 ? (nb1 + nb2) % 10 && nb1 + 1 : 0;

请注意,这只是一个例子,它没有任何意义。

2 个答案:

答案 0 :(得分:3)

有一种简单的方法:

condition ? function_that_does_several_things() : else_expr;

另一件事是你可以在列表中收集表达式:

int a = (1,2);

2分配给a。所以你可以试试这个:

condition ? (do_this, and_this) : else_expr;

但我建议反对;很难看到这里发生了什么,很多人在看到这样的代码时会感到困惑,惊讶和沮丧。

答案 1 :(得分:2)

不是"做这个",它"评估这个"。删除条件和" false"路径,你明白了:

 nb = (nb1 + nb2) % 10 && nb1 + 1;

所以,是的,你可以这样做,但nb的值将是逻辑表达式的结果......基本上就是这样:

 nb = ((nb1 + nb2) % 10 != 0) && (nb1 + 1 != 0);