嗨,我是新來這個網站:)什麼呢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;
}
嗨,我是新來這個網站:)什麼呢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;
}
函數scanf
根據作爲第一個參數提供的格式說明符掃描輸入。 %d
是十進制整數的格式說明符,因此如果要匹配由空格分隔的兩個數字,請使用%d %d
。
其他參數是指示匹配數字應該寫入的指針。
函數'scanf'返回成功匹配項目的數量。只要用戶提供的輸入中有兩個匹配的數字,就會重複'while'循環。
(scanf函數)返回值:接收參數數目分配成功,或EOF如果讀取失敗發生在第一個接收參數被分配之前。
這意味着,所討論的語句意味着:while scanf成功讀取兩個整數參數。
從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)
Scanf()
返回一個整數值和該數值只不過是由scanf()
函數接受輸入的數量。
scanf("%d %d", &a, &b)
將返回2,現在我們的聲明變得
while(2 == 2)
{
// block of code
}
即2==2
是真實的,它意味着:
while(1)
{
// block of code executed
}
看到該文檔http://www.cplusplus.com/reference/cstdio/scanf /?kw = scanf – Tobias 2014-09-03 10:33:24
它被標記爲'C++',但它看起來像C代碼。在C++中'stdio.h'已被棄用,請改用'cstdio'。或者,更好的方法是使用'iostream'中的I/O工具。 – 2017-02-06 17:05:45