小编Mac*_* Pk的帖子

两个真正的变量在(tmp1 == tmp2)中返回false.为什么?

我刚遇到一个问题.我想比较我的Eratostenes的Sieve是否包含素数.在代码中我有这一行

if (sieve[2] == is_prime(2)) // returns false
    printf ("true");
Run Code Online (Sandbox Code Playgroud)

现在,筛[2]是一个布尔值,它的值是真的(我甚至在数组中检查过,所以毫无疑问).is_prime(2)是一个布尔值(我也检查过).

现在我的问题.上面给出的行返回false.是 - 它返回false,即使它的声明是:

if ( true == true )  // which normally returns true
    printf ("true");
Run Code Online (Sandbox Code Playgroud)

但是,删除一个方程符号后:

if ( sieve[2] = is_prime(2) ) // returns true
    printf ("true");
Run Code Online (Sandbox Code Playgroud)

该语句返回true.

有人可以简单地解释一下这个等式标记在这种情况下与==相比如何工作?

提前致谢

编辑

is_prime:

bool is_prime(int x) {
    unsigned int i,j,k;
    if (x < 2) return false;
    else {
        for (i=2; i!=x; i++) {
            if (x == i) return true;
            else if (x % i == 0) return false;
        } …
Run Code Online (Sandbox Code Playgroud)

c++ if-statement

-3
推荐指数
1
解决办法
143
查看次数

标签 统计

c++ ×1

if-statement ×1