为什么 if 表达式的计算结果几乎总是为 1?

-2 c

我尝试编写一个小程序来打印所有 3 位数字,并且每个数字都不同。这是我写的:

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

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

它打印:100 111 122 133...

为什么会发生这种情况?例如,不应打印数字 100: If 0 != 0 != 1 print。

Dom*_*que 6

不是:

a != b != c
Run Code Online (Sandbox Code Playgroud)

但:

(a != b) && (a != c) && (b != c)
Run Code Online (Sandbox Code Playgroud)

玩得开心

  • 不,这与优先级无关。没有任何编程语言支持这样的构造。IIRC,Python 知道 `a &lt; b &lt; c`,但你的表达式需要三个比较,而不是两个。-- 顺便说一句,现在不要评论“谢谢”,请将答案标记为已接受。 (3认同)