使用布尔值的条件表达产生意想不到的结果

时间:2012-12-22 21:38:28

标签: c boolean

#include <stdio.h>
#include <stdbool.h>
#include <math.h>

int main() {        
    int num;
    int i;
    int prime = true;

    // omitted for brevity

    if (prime = true) {
        printf("The number is prime\n");    
    }
    else {
        printf("The number isn't prime\n");
    }
}

我正在尝试编写一个程序,检查一个数字是否为素数,但总是说数字是素数。答案可能很明显,但我是一个巨大的菜鸟。

2 个答案:

答案 0 :(得分:4)

至少,

if (prime = true)

应该是

if (prime == true)

,但更好的只是

if (prime)

否则,赋值prime = true的结果是赋值,即为真。

答案 1 :(得分:3)

if (prime = true)

应该是

if (prime == true)

代替。

=是赋值运算符,您正在寻找等于运算符==

确保在启用警告的情况下编译程序,并修复代码中的所有警告。一个体面的计划不应该产生任何警告。