while(scanf("%d%d",&n,&m)==2&&n&&m)什么意思

2025-05-19 04:40:52
推荐回答(3个)
回答(1):

是这样的
第一个数输入的返回值 两个百分号D 只有输出两个整数后才返回2 所以 scanf() == 2
&& 是且的意思 也就是说 不但要输入2个正确的数 还有n且m不等于0;
c里没有bool c是这么认为的 非0即真

比如 我们输入 0 0 并按回车 这样循环条件是不成立的
scanf == 2 成立
&&n n=0(假) 不成立 后面m也是并且 一个是假条件不成立 所以后面就没必要判断了

在比如我们输入 2 0 并按回车 一样m不成立 n 和scanf 是都成立的

在比如我们输入 a 1 并按回车 scanf 不成立 应为输入的不是整数 scanf == 1

回答(2):

  • 这条语句是判断是否m,n还有输入,如果有,继续执行循环,如果没有,跳出循环。具体分析如下:

  • 1、scanf("%d%d",&n,&m)表示从键盘读入两个数字,如果键盘有输入,scanf函数返回结果为1,若没有输入,则scanf函数返回结果为0。

  • 2、while(scanf("%d%d",&n,&m)&&n&&m)这条语句,当n,m有输入时,scanf 返回1,条件为真,继续执行循环;当n,m没有输入时,scanf为0,条件为假,跳出while循环。

回答(3):

scanf("%d%d",&n,&m)==2表示成功读取两个整形值到n和m
&&n&&m表示循环的条件是n和m都不为0
所以就是如果读取两个非0的值,就继续循环。