这是什么?C++中的运算符吗?

AJJ*_*AJJ 8 c++ conditional-statements

考虑这个功能

template<class T> inline bool cx(T &a, T b) {return a < b ? a = b, 1 : 0;}
Run Code Online (Sandbox Code Playgroud)

任何人都能解释这究竟是做什么的吗?它似乎与典型的condition ? true : false格式不同.

Pau*_*oub 9

我们可以这样说得更清楚:

return a < b ? (a = b, 1) : 0;
Run Code Online (Sandbox Code Playgroud)

带括号的位表示"分配ba,然后1用作我们的值".

C和C++中逗号分隔的值列表通常表示"评估所有这些,但使用最后一个作为表达式的值".