2014-09-03 73 views
0

嗨,我是新來這個網站:)什麼呢scanf函數( 「%d%d」,&A&B)== 2指

我的問題是,在下面的程序,什麼是代碼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; 
} 
+3

看到該文檔http://www.cplusplus.com/reference/cstdio/scanf /?kw = scanf – Tobias 2014-09-03 10:33:24

+0

它被標記爲'C++',但它看起來像C代碼。在C++中'stdio.h'已被棄用,請改用'cstdio'。或者,更好的方法是使用'iostream'中的I/O工具。 – 2017-02-06 17:05:45

回答

1

函數scanf根據作爲第一個參數提供的格式說明符掃描輸入。 %d是十進制整數的格式說明符,因此如果要匹配由空格分隔的兩個數字,請使用%d %d

其他參數是指示匹配數字應該寫入的指針。

函數'scanf'返回成功匹配項目的數量。只要用戶提供的輸入中有兩個匹配的數字,就會重複'while'循環。

1

documentation

(scanf函數)返回值:接收參數數目分配成功,或EOF如果讀取失敗發生在第一個接收參數被分配之前。

這意味着,所討論的語句意味着:while scanf成功讀取兩個整數參數。

2

scanf返回成功填充成功的參數列表項數。
在這個程序中,這意味着如果輸入成功,結果將被打印並進入下一個循環。
參考scanf

+1

如果'scanf'不成功,它仍然會返回成功填充的參數個數。事實上,這是確切的回報值最相關的非成功案例。 – MSalters 2014-09-03 12:04:55

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) 
0

Scanf()返回一個整數值和該數值只不過是由scanf()函數接受輸入的數量。

scanf("%d %d", &a, &b)將返回2,現在我們的聲明變得

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

2==2是真實的,它意味着:

while(1) 
{ 
    // block of code executed 
} 
相關問題