相关疑难解决方法(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
查看次数

处于相同"if"条件的两个"=="相等运算符未按预期工作

我试图建立三个相等变量的相等,但下面的代码不打印应该打印的明显正确的答案.有人可以解释,编译器如何解析if(condition)内部给定的?

#include<stdio.h>
int main()
{
        int i = 123, j = 123, k = 123;
        if ( i == j == k)
                printf("Equal\n");
        else
                printf("NOT Equal\n");
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

manav@workstation:~$ gcc -Wall -pedantic calc.c
calc.c: In function ‘main’:
calc.c:5: warning: suggest parentheses around comparison in operand of ‘==’
manav@workstation:~$ ./a.out
NOT Equal
manav@workstation:~$
Run Code Online (Sandbox Code Playgroud)

编辑:

通过下面给出的答案,以下声明可以检查上面的相等吗?

if ( (i==j) == (j==k))
Run Code Online (Sandbox Code Playgroud)

c c++ compiler-construction operators equals-operator

11
推荐指数
4
解决办法
3513
查看次数

检查所有变量是否等于c ++中的相同值

比较多个变量以查看它们是否都是相同值的最简单方法是什么?例如,如果var1 = 53,我想检查var2或var3是否等于var1和彼此?到目前为止,我已经这样做了:

if(row1==row2==row3==row4==col1==col2==col3==col4==diag1==diag2)
    cout << "It is a magic square";
else
    cout << "Not a magic square";
Run Code Online (Sandbox Code Playgroud)

然而,这似乎不起作用.谢谢你的帮助.

c++ compare

7
推荐指数
2
解决办法
7888
查看次数

为什么将三个变量与==进行比较会得出false?

以下程序的输出是“不相等”,但是我希望“他们是平等的”三个变量相比(xy,和z)相等。为什么?

#include <iostream>

int main()
{
    int y, x, z;
    y = 3;
    x = 3;
    z = 3;

    if (x == y == z)
    {
        std::cout << "they are equal\n";
    }
    else
    {
        std::cout << "they are not equal\n";
    }
}
Run Code Online (Sandbox Code Playgroud)

c++

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