一个问题被张贴有关链比较运营商以及它们如何在不同的语言解释.
链接比较运算符意味着(x < y < z)将被解释为((x < y) && (y < z))而不是((x < y) < z).
对该问题的评论表明,Python,Perl 6和Mathematica支持链接比较运算符,但是其他语言支持这个功能,为什么它不常见?
快速浏览一下Python文档就可以看出这个功能至少从1996年开始.有没有更多语言没有添加这种语法的原因?
静态类型语言会出现类型转换问题,但还有其他原因这种情况不常见吗?
if (1 == 1 == 1 == 1 == 1)
std::cout << "right";
Run Code Online (Sandbox Code Playgroud)
上面的代码显示“正确”。
if (-1 == -1)
std::cout << "right";
Run Code Online (Sandbox Code Playgroud)
上面的代码也显示“正确”。
if (-1 == -1 == -1)
std::cout << "right";
Run Code Online (Sandbox Code Playgroud)
上面的代码什么也没显示。(这是因为if statement我猜这不是真的?)
我想知道为什么会发生这种奇怪的事情。
因为-1等于-1并且无论我重复多少次(据我所知),该语句始终为真。
我正在编写一个简单的代码来按顺序迭代打印二叉树,但我偶然发现了这个奇怪的调试步骤:

图像没有以任何方式进行photoshopped或修改,"locals"窗口显示两个指针都有不同的值,但在将它们与自身进行比较并且与NULL进行比较时,相等性返回true并且"Wat ??" 被打印出来,怎么样?
我错过了什么吗?
如果我把它重写为
if(pointer1 == NULL && pointer2 == NULL)
cout << "This won't be printed";
Run Code Online (Sandbox Code Playgroud)
它工作正常
int j=42;
if( (5<j<=1) ) {
printf("yes");
} else {
printf("no");
}
Run Code Online (Sandbox Code Playgroud)
输出:
yes
Run Code Online (Sandbox Code Playgroud)
为什么输出是?
不是条件只有一半是真的吗?
我正在学习C,却遇到了一个奇怪的问题。我想我了解多个if和else-if语句之间的区别,但是这次我根本无法理解行为上的区别。如果我删除else关键字,则它按预期工作,但不包含else。
该代码是关于在不区分大小写的情况下对每个字母的出现进行计数的(因此,“ a”和“ A”都被视为字母“ a”的出现次数)。
我尽力去掉括号,但什么也没改变,所以我把它们留在里面以避免警告。
while ((c = getchar()) != EOF)
{
if ('A' < c < 'Z')
{
++array[c - 'A'];
}
else if ('a' < c < 'z')
{
++array[c - 'a'];
}
}
Run Code Online (Sandbox Code Playgroud)
当我键入“ a”时,数组不会递增,但是如果删除else语句,从而切换到if倍数的情况,它将按预期工作。在两种情况下,字母“ A”都会很好地更新数组。
您能否帮助我了解这种情况下的行为差异?