C 如何比较2 int
我想做一个验证码一样的检查,但它所做的只是崩溃。 代码怎么了? 我的代码如下所示:C 如何比较2 int,c,if-statement,integer,addition,C,If Statement,Integer,Addition,我想做一个验证码一样的检查,但它所做的只是崩溃。 代码怎么了? 我的代码如下所示: 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", randomN
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");
}
如果(solution=randomNumberSum)
是赋值,则将randomNumberSum的值赋值给变量solution,实际上是检查两者是否持有相同的值
如果(solution==randomNumberSum){
你必须这么做
scanf("%d", &solution);
(需要将变量解决方案的地址作为参数传递)
使用scanf()
读取整数时,需要提供int
变量的地址,而不是scanf(“%d”,解决方案);
:
scanf("%d", &solution);
您还需要在if
-语句中使用=
(比较)而不是=
(赋值)。两个问题:
(solution==randomNumberSum)
与您的(solution=randomNumberSum)
-这会使输出始终为真#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");
}
}
#包括
#包括
int main(int argc,字符**argv)
{
printf(“我需要做一些测试以确保您是人。\n”);
printf(“让我们开始”\n);
int randomNumber1=rand()%100;
int randomNumber2=rand()%100;
printf(“什么是%d+%d?\n”,randomNumber1,randomNumber2);
int randomNumberSum=randomNumber1+randomNumber2;
int解;
printf(“%d\n”,randomNumberSum);
scanf(“%d”和“解决方案”);
如果(解决方案==randomNumberSum){
printf(“干得好的人!\n”);
}否则{
printf(“很好的尝试,bot\n”);
}
}
scanf
需要一个指向某个位置的指针来放置它正在读取的信息
您给它一个值solution
,即使它不是未初始化的(因此是一个不确定的值),也不太可能包含对象的有效地址
您打算给它&解决方案
,它是解决方案
的地址
另外,您编写了
=
而不是=
打开编译器警告。编译器警告不仅仅是为了显示进度。启用并注意它们!请注意,您应该在发出请求之前启用并解决警告。更好的是,不要使用scanf
进行用户输入。@melpomene:您会怎么做你建议改为使用@LightnessRacesinOrbitfgets
作为实际输入,然后根据需要使用sscanf
或atoi
或strtol
。如果我在解决方案前加上“&”,它会很好地工作。为什么会这样?@DavisR5因为scanf()
需要知道把数字放在哪里。解决方案本身只是一个未初始化的整数,但&solution
是一个存储该整数值的地址。“应该”/“必须”,而不是“应该”-这不是建议!而且你缺乏解释。我不知道人们为什么会这样做…C类问题很常见。我只是不再对此大惊小怪了