我不知道为什么我的代码不循环。我的目的是让用户输入正确的数字(1),否则代码将一直要求用户输入一个数字,直到用户输入“1”。运行我的代码后,如果用户输入的数字不正确,我不知道为什么我的代码不会要求用户继续输入数字。这是我的代码。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int answer =0;
for( ; ; )
{
printf("please enter the password ");
scanf("%d",&answer);
if(answer == 1)
printf("correct");
break;
}
}
答案 0 :(得分:2)
你在for循环中没有做你正在做的事情。没有大括号,if语句只会覆盖一个语句,所以无论if语句中的条件是真还是假,你都会遇到中断。
这是您的代码现在正在做的事情:
for( ; ; )
{
printf("please enter the password ");
scanf("%d",&answer);
if(answer == 1)
{
printf("correct");
}
break;
}
你真正想要的是:
for( ; ; )
{
printf("please enter the password ");
scanf("%d",&answer);
if(answer == 1)
{
printf("correct");
break;
}
}
因此,即使看起来,就像代码中的if处理两个语句一样,但事实并非如此。甚至有一个着名的例子就是这样的bug在Apple's goto fail中投入生产。需要注意的是,为什么有些编码样式总是需要括号ifs,if ifs和elses,即使它只是一个语句。
答案 1 :(得分:0)
您忘了添加其他大括号:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int answer = 0;
while (answer != 0)
{
printf("please enter the password ");
scanf("%d",&answer);
if(answer == 1) {
printf("correct");
break;
}
}
}