这在C#y - = y>中意味着什么? 9? 9:0;

时间:2014-10-30 18:33:45

标签: c# ternary-operator

当我试图理解C#代码块时,我问自己这段代码意味着什么:

y -= y > 9 ? 9:0;

提前致谢

7 个答案:

答案 0 :(得分:11)

是的,这段代码有点令人困惑。

基本上逻辑如下:

if y is greater than 9
    subtract y by 9
otherwise
    subtract y by 0

这也等同于以下代码:

if (y > 9) {
    y = y - 9;
}
else {
    y = y - 0;
}

在这种情况下,其他情况当然是多余的,但我做了直译。

如需进一步阅读,您可以查看here。祝你好运!

答案 1 :(得分:2)

如果y > 9然后从y减去9,则减去零(不执行任何操作)。

答案 2 :(得分:2)

首次评估:

(y > 9)

如果这是真的,表达式将被计算为9。

如果为false,则评估为0.

然后从y的当前值中减去该评估结果。

答案 3 :(得分:1)

正如我想的那样:

if(y>9)
  y=y-9;
else
  y=y-0;

答案 4 :(得分:0)

这使用了C#中的? operator。条件运算符(?:)根据布尔表达式的值返回两个值中的一个,并计算为:

if(y>9)
  y-= 9;
else
 y-= 0;

答案 5 :(得分:0)

  • - = 是一个减法运算符 y -= (expression)表示从y中减去(表达式)并将该值存储在y

  • <强>? :是三元运营商。这是一种编写具有条件值的表达式的方法 (expression) ? x : y表示如果x为真,则评估为(expression),如果y为假,评估结果为(expression)

答案 6 :(得分:0)

y -= something;

装置

y = y - something;

“?”是一个三元运算符。它的语法是:

condition ? true_expression : false_expression

所以,该行的等价物是:

if (y > 9)
    y = y - 9;
else
    y = y - 0; // Of course, this wouldn't make sense written like this.

该行的简洁版本可以是:

if (y > 9)
    y -= 9;