scanf(“%d%d”,& a,& b)== 2是什么意思?

时间:2014-09-03 10:29:42

标签: c++ scanf

在下面的程序中,代码 scanf(“%d%d”,& a,& b)== 2 是做什么的?

程序获取两个数字并打印总和:)

#include <stdio.h>

int main(void)
{
    int a, b;
    while (scanf("%d %d", &a, &b) == 2)
        printf("%d\n", a+b);
    return 0;
}

5 个答案:

答案 0 :(得分:2)

scanf返回成功填写的参数列表的项目数 在这个程序中,这意味着如果输入成功,结果将被打印并进入下一个循环 参考scanf

答案 1 :(得分:2)

函数scanf根据作为第一个参数提供的格式说明符扫描输入。 %d是十进制整数的格式说明符,因此如果要匹配由空格分隔的两个数字,请使用%d %d

其他参数是应该写入匹配数字的指针。

函数'scanf'返回成功匹配项的数量。只要在用户提供的输入中有两个匹配的数字,就会重复'while'循环。

答案 2 :(得分:1)

来自documentation

  

(scanf)返回值:成功分配的接收参数数,如果在分配第一个接收参数之前发生读取失败,则返回EOF。

这意味着,有问题的陈述意味着:当scanf成功读取两个整数参数时。

答案 3 :(得分:0)

来自CC标准

Returns
3 The scanf function returns the value of the macro EOF if an input failure occurs before
the first conversion (if any) has completed. **Otherwise, the scanf function returns the
number of input items** assigned, which can be fewer than provided for, or even zero, in
the event of an early matching failure

因此,while循环中的条件检查用户是否输入了两个项目(数字)。

while (scanf("%d %d", &a, &b)==2)

答案 4 :(得分:0)

Scanf()返回一个整数值,该值只是scanf()函数接受的输入数量。

scanf("%d %d", &a, &b)将返回2,现在我们的声明变为

while(2 == 2)
{
    // block of code
}

2==2为真,这意味着:

while(1)
{
    // block of code executed
}