我看到了下面这行

hsb.s = max != 0 ? 255 * delta / max : 0;

做什么?在这种情况下是什么意思?


当前回答

为了清楚起见,它是

hsb.s = (max != 0) ? (255 * delta / max) : 0;

也就是返回

255*delta/max如果max != 0 如果Max == 0则为0

其他回答

它被称为条件操作符(这是一个三元操作符)。

它的形式是:condition ?Value-if-true: value-if-false 想想?“then”和“else”。

你的代码相当于

if (max != 0)
  hsb.s = 255 * delta / max;
else
  hsb.s = 0;

用括号写出来可能会更清楚一些:

hsb.s = (max != 0) ? (255 * delta / max) : 0;

它所做的是计算第一个括号里的部分。如果结果为真,那么?在:之前返回。如果为false,则返回:后面的内容。

为了清楚起见,它是

hsb.s = (max != 0) ? (255 * delta / max) : 0;

也就是返回

255*delta/max如果max != 0 如果Max == 0则为0

hsb.s = max != 0 ? 255 * delta / max : 0;

? 三元运算符。它的工作原理类似于if和:

=表示不等于

所以这条直线的长形式是

if (max != 0) { //if max is not zero
  hsb.s = 255 * delta / max;
} else {
  hsb.s = 0;
}

? :这不是三元运算符吗?

Var x=表达式?真:假