2012-11-27 62 views
-8

這可能是個愚蠢的問題,但我很困惑。這就是我清除疑慮的原因。昨天,我的採訪中我得到了像什麼是printf的返回類型

char ch="Hello"; 
printf("%d",printf("%s",ch)); 

我想printf一個問題是型功能,因爲我從來沒有見過printf功能分配給任何一個變量。所以,我告訴,它會顯示編譯錯誤。由於編譯器無法找到返回類型printf的功能。但是我錯了。輸出是Hello5。我很困惑,這是怎麼回事。

+1

'焦炭CH = 「你好」;'也許應該是'字符* CH = 「你好」;' – UmNyobe

+1

downvote是意料之中的,但沒有那麼多,因爲這。只有1條評論和2條答案。什麼關於休息3 ..? – Ravi

+0

@UmNyobe在我的採訪中這已被問到。我自己沒有問過這個問題。\ – Ravi

回答

4

函數fun()返回一個int,你只是沒有把它分配給任何東西。所以返回值被丟棄,因爲它沒有分配給任何東西。

printf順便說一下,不是void函數,而是返回打印的字符數,在「Hello」的情況下爲5。

+0

,我知道這一點。這就是爲什麼,我提到了我的問題中的輸出。 – Ravi

2

你可能讀什麼「你需要一個L值接受函數調用的返回」

對於如。在你的代碼中。

你不能做

5 = fun(); 

因爲5是不是L值。

但是這兩種都很好

int i; 
i = fun(); // i is an l-value 

fun(); // ignore the return value 

另外,你需要

char * str = "hello"; // you cannot allocate a string to a single char 

而且void main()是非標準的。

你需要

int main()