【问题标题】:Why that if expression almost always evaluate to 1?为什么 if 表达式几乎总是计算为 1?
【发布时间】:2022-11-03 22:31:26
【问题描述】:

我试图制作一个小程序来打印每个数字都不同的所有 3 位数字。这是我写的:

for(int i = 100; i<= 999; i++)
{
    if((i%10) != (i/10%10) != (i/100))
        printf("%d ",i);
}

而不是打印:101 102 103...

它打印:100 111 122 133...

为什么会这样?例如,不应打印的数字 100:如果 0 != 0 != 1 打印。

【问题讨论】:

  • 它产生了什么?你期待什么?请edit 澄清。
  • 我说我想打印数字不同的数字,例如:102 103 104 ...
  • 仔细阅读我的评论。
  • @Jabberwocky 现在好点了吗?
  • 是的,好多了

标签: c


【解决方案1】:

不是:

a != b != c

但:

(a != b) && (a != c) && (b != c)

玩得开心

【讨论】:

  • 完美,简洁的配方!
  • 你可以解释吗为什么没用?
  • @nonamedelete a != b != c 不是一个表达式,如果 a、b 和 c 都不同则为真,但它等效于 (a != b) != c,这显然不是你想要的。
  • 谢谢大家,我知道这与优先规则有关。它总是这样。
  • 不,这与优先级无关。没有编程语言支持这样的结构。 IIRC,Python 知道a &lt; b &lt; c,但您的表达式需要三个比较,而不是两个。 -- 顺便说一句,现在不要评论“谢谢”,请将答案标记为已接受。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-10
  • 1970-01-01
  • 2012-07-21
  • 2019-07-10
  • 2017-08-03
  • 1970-01-01
相关资源
最近更新 更多