if语句-C如何比较2 int



我想做一个类似captcha的检查,但它所做的只是崩溃。代码出了什么问题?我的代码如下:

printf("I need to make some tests to ensure that you are a human being.n");
printf("Let's startn");
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()读取整数时,需要提供int变量的地址:

scanf("%d", &solution);

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

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

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

你打算给它&solution,这是solution的地址。

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

if (solution = randomNumberSum)是赋值,您将randomNumberSum的值赋值给变量解决方案,您的意思实际上是检查两者是否持有相同的值。。。

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

你必须做

scanf("%d", &solution); 

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

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

几个问题:

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

请参阅更正后的代码:

#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 startn");
    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");
    }
}

相关内容

  • 没有找到相关文章

最新更新