【问题标题】:How is x++==4 a condition?x++==4 是怎样一个条件?
【发布时间】:2016-10-28 16:49:20
【问题描述】:

我正在学习 edx 的 Java 课程。对于这个问题,条件是 x++==4。我尝试发现只有当我输入 x 值 4 时,条件才会评估为真。但为什么?

1) 为什么当我输入 x = 3 或 x = 2 时,条件评估为假?

2) 为什么 x++==4 甚至是一个条件?这就像 x = x + 4。它怎么可能是真或假?它是一个方程,不像 x > 3 等。

【问题讨论】:

  • x++==4 不像x = x + 4
  • 查找++一元运算符和==
  • 为什么它不是是一个条件? “这是一个方程” - ,有一个==
  • x = x + 4不是等式。这是一个赋值表达式语句。

标签: java operators conditional-statements logical-operators edx


【解决方案1】:
if (x++==4) { ... }

可以简单地用以下几行替换

boolean b = (x == 4);
x = x + 1;
if (b) { ... }

您评估x 是否等于4,然后使用Postfix increment Operator ++ 递增它


为什么当我输入 x = 3 或 x = 2 时,条件评估为 假的?

因为

3 == 4; // false
2 == 4; // false

【讨论】:

  • 你应该稍微扩展你的代码;它目前无法编译,因为x == 4 不是声明等。我会建议进行编辑以使您的声明更准确(如果您不同意,请随时回滚)。 (不是反对者)
  • @AndyTurner 感谢您的编辑,确实更清楚了。我不介意投反对票。只要答案是正确的
  • 感谢您的快速回答!我想知道它是否应该是 boolean b = (x == 4);如果 (b) { ... } x = x + 1;因为它是一个后缀增量。
  • @vade 否,因为您的布尔评估是在 boolean b = (x == 4) 完成的,并且您应该在评估之后进行增量。
  • 是的,但它说我需要 15 次代表才能公开投票
【解决方案2】:

是因为x==4是一个条件吗?因此,如果变量

,x++ 只是值的增量

不要让 ++ 欺骗你的大脑...

即使在最丑陋的方式上也会发生同样的情况

if (x---5==0) {恰好是

   if ((x--)-5==0) {

【讨论】:

  • 感谢您的回答。所以你的例子是等价的 if (x==5) { } then later x = x - 1 ?
  • 是的......为了这个例子,我想让你明白......
  • 迟早你会检查,这不是一个好主意,因为溢出会破坏孔条件......
猜你喜欢
  • 2020-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-26
  • 1970-01-01
  • 2012-03-17
相关资源
最近更新 更多