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
语句中使用 ==
(比较)而不是 =
(赋值)。
几个问题:
- 您正在分配而不是比较(我的
(solution == randomNumberSum)
与您的 (solution = randomNumberSum)
- 这导致输出始终为真
- 您向 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
的地址。
另外,顺便说一句,你写的是 =
而不是 ==
。 打开编译器警告。
我想做一个类似检查的验证码,但它只会崩溃。 代码有什么问题? 我的代码如下所示:
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
语句中使用 ==
(比较)而不是 =
(赋值)。
几个问题:
- 您正在分配而不是比较(我的
(solution == randomNumberSum)
与您的(solution = randomNumberSum)
- 这导致输出始终为真 - 您向 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
的地址。
另外,顺便说一句,你写的是 =
而不是 ==
。 打开编译器警告。