gpt4 book ai didi

java - 三元运算符的编译错误

转载 作者:行者123 更新时间:2023-12-01 22:19:20 25 4
gpt4 key购买 nike

我用三元运算符尝试了以下内容,但我不明白为什么它没有编译。这个问题看起来很小,但我不明白,因此困扰我 -

第 1 行 --> int a = false ? y+=1 : (x*=10);

第 2 行 --> int b = false ? y+=1 : x*=10;

第 1 行 编译但第 2 行 不编译。为什么 ?

在第三个操作数而不是第二个操作数的情况下,括号有何不同。我不必在第二个/第三个操作数(一元、字符串、基本算术...)中使用括号和其他任何东西。为什么只使用赋值运算符,特别是第三个操作数?

提前致谢!

最佳答案

没有 ()周围x*=10 , *= 的整个左侧操作数运算符是 false ? y+=1 : x ,就好像你有:

int b = (false ? y+=1 : x)*=10;

作为false ? y+=1 : x不是变量,它不能是 *= 的左侧操作数.

赋值运算符(包括复合赋值,*= 等)在 precedence list 中非常非常低,在条件运算符 ( ? : ) 下方:

Operators Precedence

  • postfix: <em>expr</em>++ <em>expr</em>--
  • unary: ++<em>expr</em> --<em>expr</em> +<em>expr</em> -<em>expr</em> ~ !
  • multiplicative: * / %
  • additive: + -
  • shift: << >> >>>
  • relational: < > <= >= instanceof
  • equality: == !=
  • bitwise: AND &
  • bitwise: exclusive OR ^
  • bitwise: inclusive OR |
  • logical: AND &&
  • logical: OR ||
  • ternary: ? :
  • assignment: = += -= *= /= %= &= ^= |= <<= >>= >>>=

关于java - 三元运算符的编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41365939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com