2014-09-03 3 views
0

Привет Я новичок в этом сайте :)что делает Scanf («% d% D», & а, и б) == 2 означает

Мой вопрос заключается в том, что в программе ниже, что делает код scanf ("% d% d", & a, & b) == 2 do ??

программы получить два числа и напечатать сумму :)

#include <stdio.h> 
int main(void) 
{ 
    int a, b; 
    while (scanf("%d %d", &a, &b)==2) 
     printf("%d\n",a+b); 
    return 0; 
} 
+3

Смотрите документ http://www.cplusplus.com/reference/cstdio/scanf /? kw = scanf – Tobias

+0

Это помечено знаком «C++», но это похоже на C-код. В C++ 'stdio.h' устарел, вместо этого используйте' cstdio'. Или, еще лучше, используйте средства ввода-вывода в 'iostream'. –

ответ

1

Функция scanf сканирует в соответствии с спецификатора формата при условии в качестве первого аргумента. %d - спецификатор формата для десятичного целого, поэтому используйте %d %d, если вы хотите совместить два числа, разделенные пробелом.

Другие аргументы - это указатели, в которых должны быть записаны согласованные числа.

Функция «scanf» возвращает количество успешно согласованных элементов. Цикл «while» повторяется до тех пор, пока в введенном пользователем входе имеется два совпадающих числа.

1

От documentation:

(зсап) Возвращаемое значение: Число принимающих аргументов успешно назначено, или EOF, если Ошибка чтения происходит до назначения первого аргумента приема.

Это означает, что данное утверждение означает: while scanf успешно прочитал два целых аргумента.

2

scanf возвращает количество элементов списка аргументов, успешно заполненных успешным ходом.
В этой программе это означает, что вход будет успешным, результат будет напечатан, и он войдет в следующий цикл.
относятся к входу scanf

+1

Если 'scanf' не будет успешным, он все равно вернет количество успешно заполненных аргументов. Фактически, это неудачный случай, когда точное возвращаемое значение наиболее актуально. – MSalters

0

С CC Standard

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 (scanf("%d %d", &a, &b)==2) 
0

Scanf() возвращает целое значение, и это значение не что иное, как число входов, принятых scanf() функции.

scanf("%d %d", &a, &b) возвратит 2, и теперь наше утверждение становится

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

т.е. 2==2 верно, и это означает:

while(1) 
{ 
    // block of code executed 
} 
Смежные вопросы