我刚遇到一个问题.我想比较我的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)