2013-09-27 88 views
1

我現在正在學習C語言,並且正在使用一本相當好的書來學習(它使得事情變得很容易理解......)但是我遇到了一些我無法理解的東西迴繞到我的頭,想的解釋是什麼代碼這一行是「做」 ...奇怪的回報;一行函數返回一個int

這裏是功能:

int yes_no(char *question) 
{ 
    char answer[3]; 
    printf("%s? (y/n): ", question); 
    fgets(answer, 3, stdin); 
    return answer[0] == 'y'; 
} 
從我瞭解C語言編程至今

所以,這個函數應該返回一個int,它會在這個函數之外的地方創建一個字符串,在它的末尾添加一個「?(y/n):」,並將這個問題打印到屏幕上,然後允許用戶輸入是或否,並存儲在一個名爲「答案」的數組.......但這看起來像它會返回一個字符...或東西....不是一個整數....爲什麼有一個=='Y'在回線?對於我的生活,我無法弄清楚這個函數的返回行是在做什麼。一些幫助將是mucis gracias。

+0

你應該閱讀介紹C語言教程。 – 2013-09-27 16:20:57

回答

2

,但是這看起來像它會返回一個字符...什麼的....不是int

沒有,但是這不會是一個問題,無論是。積分類型可以隱式轉換爲另一種類型,因此返回int的函數返回char是完全正確的。

除此之外,C中的比較運算符產生一個int - 如果比較中的premissa爲true,則爲1,否則爲零。該功能主要測試輸入字符串的第一個字符是否爲'y'

1

返回回答[0] =='y';

實際上將返回一個int值,1,如果答案以「Y」和0,如果答案是其他任何東西,沒有用「Y」

+0

對不起,計算結果爲1或0的整數值 – orgtigger

1

看到你最近的編輯開始,你是什麼返回是比較結果[0] ==「y」,它是一個整數。

++++++++++

你的函數接收一個參數,一個指向它,我們可以假設是一個字符串一個字符。

然後,您打印該參數後跟隨(y/n)並等待用戶輸入標準輸入。

當你得到的輸入,你檢查它的第一個字符,如果是Y返回1〜真,如果它不是你返回0〜虛假

+0

好吧,我看到了,我只是還在這裏,並且只是用來查看'if'語句中的比較。我認爲那是你唯一使用它們的地方。我不知道在你使用它們的任何地方你仍然可以得到1或0的回報。這很好知道!謝謝你的提示! –