相关疑难解决方法(0)

链接Bool值给出了预期的相反结果

我不假思索地编写了一些代码来检查结构的所有值是否都设置为0.为了实现这一点,我使用了:

bool IsValid() {
    return !(0 == year == month == day == hour == minute == second);
}
Run Code Online (Sandbox Code Playgroud)

其中所有struct成员都是unsigned short类型.我使用代码作为更大测试的一部分,但注意到它对于不等于零的值返回false,对于全部等于零的值则返回true - 与我预期的相反.

我将代码更改为:

bool IsValid() {
    return (0 != year) || (0 != month) || (0 != day) || (0 != hour) || (0 != minute) || (0 != second);
}
Run Code Online (Sandbox Code Playgroud)

但是想知道是什么导致了奇怪的行为.这是优先的结果吗?我试过谷歌这个答案,但没有发现任何东西,如果有任何术语来描述我想知道它的结果.

我使用VS9和VS8编译了代码.

c c++ compiler-construction boolean operator-precedence

15
推荐指数
3
解决办法
2410
查看次数

A> = B> = C中的C运算符?

考虑:

#include<stdio.h>

int main() {
    if (2 >= 1 >= 1)
        printf("1\n");
    if (200 >= 100 >= 100)
        printf("2\n");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

nyc @ nyc:〜/ PRG $ gcc sample.c

nyc @ nyc:〜/ PRG $ ./a.out 1

为什么即使第二个表达式的计算结果为TRUE,该程序也只打印1?

c

1
推荐指数
2
解决办法
220
查看次数

if('A'<= e <='Z')与if(e> ='A'&& e <='Z')之间的差异

这两者在逻辑上是相同的,但它们的工作方式不同:

if (e >='A' && e <= 'Z')
Run Code Online (Sandbox Code Playgroud)

if('A' <= e <= 'Z')
Run Code Online (Sandbox Code Playgroud)

第一行代码正常,但第二行不正常.为什么?

c conditional-statements

-5
推荐指数
1
解决办法
177
查看次数