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

作者&投稿:厨人鲁 (若有异议请与网页底部的电邮联系)
scanf()函数返回成功赋值的数据项数,读到文件末尾出错时则返回EOF。
  如:

  scanf("%d,%d", &a, &b);

  如果a和b都被成功读入,那么scanf的返回值就是2

  如果只有a被成功读入,返回值为1

  如果a和b都未被成功读入,返回值为0

  如果遇到错误或遇到end of file,返回值为EOF。

  且返回值为int型.

按%d%d的格式给m和n赋值
比如你的数据是18,23,67,24,87,45
那m,n的值为:第一次while m=18,n=23
第二次 m=67,n=24,下同

c语言 while (~scanf("%d%d",&n,&m)) 在这里这个符号“~”是什么意思~

就是当输入一个整型,且这个整型的数不是0时,条件成立,否则,若输入0,则跳过while里面的内容。

其实scanf("%d",&n),n这是一个逗号表达式,所谓逗号表达式,它的值是逗号后面的那个数,举例如下:
y=(5,6);//那么y=6,注意的是因为逗号表达式的优先级比赋值运算还低,所以如果你写成y=5,6的话y还是等于5的
也就是说while(scanf("%d",&n),n)其实相当于while(n),只是因为要输入所以写成了while(scanf("%d",&n),n)这样而已

是这样的
第一个数输入的返回值 两个百分号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