C 如何比较 2 int

C How do I compare 2 int

我想做一个类似检查的验证码,但它只会崩溃。 代码有什么问题? 我的代码如下所示:

printf("I need to make some tests to ensure that you are a human being.\n");
printf("Let's start\n");

int randomNumber1 = rand() % 100;
int randomNumber2 = rand() % 100;
printf("What is %d + %d ?\n", randomNumber1, randomNumber2);
int randomNumberSum = randomNumber1 + randomNumber2;
int solution;
printf("%d \n", randomNumberSum);
scanf("%d", solution);

if (solution = randomNumberSum) {
    printf("Good job human !\n");

} else {
printf("Nice try, bot \n");
}

if (solution = randomNumberSum)是赋值,你是把randomNumberSum的值赋给变量solution,你的意思其实是检查两者是否持有相同的值...

你需要做if (solution == randomNumberSum) {

你必须做

scanf("%d", &solution); 

(你需要将变量解决方案的地址作为参数传递)

而不是 scanf("%d", solution);

使用scanf()读取整数时,需要提供int变量的地址:

scanf("%d", &solution);

您还需要在 if 语句中使用 ==(比较)而不是 =(赋值)。

几个问题:

  1. 您正在分配而不是比较(我的 (solution == randomNumberSum) 与您的 (solution = randomNumberSum) - 这导致输出始终为真
  2. 您向 scanf 提供了一个 整数 值,而不是 指向整数 的指针。

查看更正后的代码:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char** argv)
{
    printf("I need to make some tests to ensure that you are a human being.\n");
    printf("Let's start\n");

    int randomNumber1 = rand() % 100;
    int randomNumber2 = rand() % 100;
    printf("What is %d + %d ?\n", randomNumber1, randomNumber2);
    int randomNumberSum = randomNumber1 + randomNumber2;
    int solution;
    printf("%d \n", randomNumberSum);
    scanf("%d", &solution);

    if (solution == randomNumberSum) {
        printf("Good job human !\n");

    } else {
        printf("Nice try, bot \n");
    }
}

scanf 需要一个指向放置它正在读取的信息的位置的指针。

你给它的 value solution 即使它不是未初始化的(因此是一个不确定的值)也不太可能包含对象的有效地址。

你的意思是给它&solution,也就是solution的地址。

另外,顺便说一句,你写的是 = 而不是 ==打开编译器警告。