C语言中对多种条件的While循环响应

C语言中对多种条件的While循环响应,c,while-loop,conditional-statements,C,While Loop,Conditional Statements,这里我有一个代码,它应该在循环的第一个序列之后打印“Error”,因为根据我前面的问题,由于“短路”,它只会读取循环的第一个条件,并且只会在循环的第一个序列之后执行。。。在解决了这个问题之后,我仍然无法显示“Error!”,所以我尝试添加&&getch(),它给了我一个 Error! 现在我有3个(多个)条件导致在第一个序列中执行“Error!”,我想知道C如何响应我的多个条件,这可能有助于解决错误 我的代码: #include <stdio.h> #include <con

这里我有一个代码,它应该在循环的第一个序列之后打印“Error”,因为根据我前面的问题,由于“短路”,它只会读取循环的第一个条件,并且只会在循环的第一个序列之后执行。。。在解决了这个问题之后,我仍然无法显示“Error!”,所以我尝试添加
&&getch()
,它给了我一个

Error!
现在我有3个(多个)条件导致在第一个序列中执行“Error!”,我想知道C如何响应我的多个条件,这可能有助于解决错误

我的代码:

#include <stdio.h>
#include <conio.h>

void main(){
    int inp;
    while(inp<10 && printf("Error") && getch()){
        clrscr();
        printf("Enter Number > 10: ");
        scanf("%d",&inp);
    }
    printf("Right Answer!");
    getch();
}
#包括
#包括
void main(){
int-inp;

虽然(inp
int-inp;
未初始化。同时
main
应返回
int
。自动变量未初始化为默认值。测试
inp
int-inp;
未初始化。另外
main
应返回
int
。自动变量未初始化为默认值。测试
inp
intmain(){
int-inp=0;
scanf(“%d”和&inp);
而(inp
intmain(){
int-inp=0;
scanf(“%d”和&inp);
而(inp根据for C语言,如果您有
&&
| |
处于条件中,则它不会计算所有条件,如果不需要,请参见示例:

if(0 && printf("ERROR!\n"))
  printf("OK\n");
将永远不会打印任何文本,因为
(0&&whatever)
的计算结果将始终为false,因此它不会在
&&
之后的第二个条件下继续,但如果您要更改位置

if(printf("ERROR!\n") && 0)
      printf("OK\n");
将只打印
错误!
,因为
printf(“错误!\n”)
将打印文本并返回大于零(7)的数字,因此条件将减少为
(7&&0)
什么将评估这两个条件为false,但将打印您的
错误!
消息

当您有更多的
&&
运算符时,它们将按从左到右的顺序求值,因此如下所示:

if( ( (inp<10 && printf("Error")) && getch() ) && ... )
如果((inp根据for C语言,如果您有
&
|
处于条件中,则如果不需要,则不会评估所有条件参见示例:

if(0 && printf("ERROR!\n"))
  printf("OK\n");
将永远不会打印任何文本,因为
(0&&whatever)
的计算结果将始终为false,因此它不会在
&&
之后的第二个条件下继续,但如果您要更改位置

if(printf("ERROR!\n") && 0)
      printf("OK\n");
将只打印
错误!
,因为
printf(“错误!\n”)
将打印文本并返回大于零(7)的数字,因此条件将减少为
(7&&0)
什么将评估这两个条件为false,但将打印您的
错误!
消息

当您有更多的
&&
运算符时,它们将按从左到右的顺序求值,因此如下所示:

if( ( (inp<10 && printf("Error")) && getch() ) && ... )

if(((inp)为什么将
printf
getch
置于while状态?它们将更适合于身体。
printf(“错误”)
将被
clrsc()
清除,并且它返回非零值总是期望
printf(“”)
因此它与while条件无关。为什么要将
printf
getch
置于while条件下?它们更适合于身体。
printf(“错误”)
将被
clrsc()
清除,并且它返回非零值总是期望
printf(“”)
因此它与while条件无关。
clrsc();
getch();
不是C标准库的一部分,ISO C也不是由POSIX定义的。
clrsc();
getch();
不是C标准库的一部分,ISO C也不是由POSIX定义的。但这将打印“错误”在用户有机会输入任何内容之前。这太粗鲁了。顺便说一下,这是我的主要问题problem@Daniel-就像我说的-看第二段-它也更容易阅读。但这会打印“错误”在用户有机会输入任何内容之前。这太粗鲁了。顺便说一下,这是我的主要问题problem@Daniel-就像我说的-看第二段-它也更容易阅读。