Tag: 平等

在C中,(x == y == z)的行为与我期望的一样吗?

我可以比较三个变量,如下所示,而不是if((x==y)&&(y==z)&&(z=x)) ? [如果所有三个变量具有相同的值,则应执行if语句。 这些是布尔。] if(debounceATnow == debounceATlast == debounceATlastlast) { debounceANew = debounceATnow; } else { debounceANew = debounceAOld; }

==用于指针比较

我引用Kernighan和Ritchie的“C编程语言”: 可以有意义地将任何指针与零相等或不等式进行比较。 但是对于算术或与不指向同一数组成员的指针进行比较的行为是未定义的。 (有一个例外:超过数组末尾的第一个元素的地址可用于指针算法。) 这是否意味着我不能依赖==来检查不同指针的相等性? 这种比较会导致错误结果的情况是什么?