我没有正确编程我的while循环

The*_*Elf 0 c++

 printf("What do you do?\n1. Walk Away.\n2. Jump.\n3. Open Door.\n\n");
 scanf("%d",&Choice);
 printf("\n\n\n");
 while(4<=Choice,Choice<=0);
 {
     printf("That is not a choice.\n");
     printf("What do you do?\n1. Walk Away.\n2. Jump.\n3. Open Door.\n\n");
     scanf("%d",&Choice);
     printf("\n\n\n");
 }
Run Code Online (Sandbox Code Playgroud)

所以这是我的计划.它可以工作,但我想要做的是重复,直到输入1,2或3的答案.但无论答案是什么,它都会通过while循环然后继续,无论下一个选择.(另外,我确实宣布了"选择";我只是不想展示整个节目.)

App*_*ish 6

您的代码中存在两个问题.你的while循环表达式不正确.逗号不会按照您的想法执行操作:在C/C++中,逗号执行左侧表达式并计算为右侧表达式,这意味着在您的情况下,您只检查第二个条件.你可能想要:

 while(4<=Choice || Choice<=0)
Run Code Online (Sandbox Code Playgroud)

||是OR运算符,如果任它周围的表达式为真返回true.

其次,在while循环结束时有一个错误的分号:

while(4<=Choice,Choice<=0); //<-- this should not be here
Run Code Online (Sandbox Code Playgroud)

这标志着循环的结束,这意味着您的代码被解析为:

while(4<=Choice,Choice<=0); //loop body is empty

{
    //and we have a random unnamed block following it
}
Run Code Online (Sandbox Code Playgroud)

删除分号,你的while循环应该正确执行.