while (scanf("%d %d",&a,&b)==2 && (a||b))什么意思

作者&投稿:进昭 (若有异议请与网页底部的电邮联系)
首先scanf返回的是输入变量的个数。
如果n=scanf(“%d %d”,&a,&b)如果两个变量a、b输入成功n=2;
a||b的意思是a“或”b,逻辑运算符||进行或运算结果非0即1,如果a=b=0,
a||b=0,否则a||b=1

while (scanf("%d %d",&a,&b)==2 && (a||b))
意思是,如果scanf输入两个数成功即==2,&&(并且)a||b的值为真(即a||b=1)则,while()括号内的值为真,即为1。然后执行while循环体内的语句。

scanf("%d%d",&a,&b)
如果a和b都被成功读入,那么scanf的返回值就是2
如果只有a被成功读入,返回值为1
如果a和b都未被成功读入,返回值为0
如果遇到错误或遇到end of file,返回值为EOF

C语句while(scanf("%d%d",&x,&y)==2&&(x!=0||y!=0))是什么意思~

scanf的返回值由后面的参数决定
scanf("%d%d", &a, &b);
如果a和b都被成功读入,那么scanf的返回值就是2
如果只有a被成功读入,返回值为1
如果a和b都未被成功读入,返回值为0
如果遇到错误或遇到end of file,返回值为EOF。
且返回值为int型.
&&(x!=0||y!=0)表示x,y都不为0

您好,
在C语言中 while();为循环语句,其结果只有2种,while(0);0为假,跳出循环
while(1);1为真,继续执行循环体中的代码。
那么在while();括号中即为判断语句,在您的while(scanf("%d",&n)!=EOF&&n);
中有两个逻辑运算符分别为:! (逻辑非)和 &&(逻辑与)运算。为同一级运算符,故从左往右执行!

! (逻辑非)
在C语言中 一般会有!0 ,!1两种比较常见。
而!0即 "true",条件语句为真,执行判断语句下面的语句,
!1即"false",条件语句为假,跳出判断语句不执行。
另有:
!n(n不等于0的任意正整数)结果都为"false",用数字表示即为"0",计算机能识别的语言只有"0"和"1","0"为假、"1"为真。

EOF表示:
End Of File,在电脑的术语缩写通常为 EOF,在作业系统决定资料源无更多的资料可读取。

scanf("%d",&n)!=EOF 即表示:返回值不等于EOF(即有效输入)

&&(逻辑与)
在C语言中 a&&b 若a,b有一个为0(包括同时为0),则a&&b=0;也就是说a,b都不为0 ,判断为真,执行循环语句。

说了这么多,那么while(scanf("%d",&n)!=EOF&&n);说白了就是指:只要n不为0,则执行循环体中的代码。否则跳出!
在C++中 您可以使用:
while(cin>>n&&n)

解释的够累了,连运算符的优先级都讲到了。。。
哎,真心累啊!