int main (void){
const int y = 99;
printf("%d\n", printf("y = %d", y));
}
這個程序打印「y = 996」,我想幫助理解。解釋printf的返回值
首先,
printf("y = %d", y)
打印出y = 99
所以最終的表達式的其餘部分是:
printf("%d\n", "y = 99");
但這應該是爲%d
無效的預計數字,而不是charArray?
int main (void){
const int y = 99;
printf("%d\n", printf("y = %d", y));
}
這個程序打印「y = 996」,我想幫助理解。解釋printf的返回值
首先,
printf("y = %d", y)
打印出y = 99
所以最終的表達式的其餘部分是:
printf("%d\n", "y = 99");
但這應該是爲%d
無效的預計數字,而不是charArray?
printf
函數返回打印的字節數。該值就是傳遞給第二個電話的內容。
內線呼叫打印y = 99
這是6個字符。所以外呼叫接收6作爲第二個參數:
printf("%d\n", 6);
所以輸出爲y = 996
。
printf
雖然將打印出字符串stdout
,它所返回是表示它打印出的字符數的整數。
嵌套調用printf
,printf("y = %d", y)
,打印輸出99和返回6,因爲該字符串"y = 99"
長6個字符,這使得以printf
外呼叫,這需要嵌套調用的返回值以printf
作爲參數,產生輸出6,給您996
最終輸出讓我舉一個簡單的例子來清除您的疑問:
樣本:
void main(void)
{
int b=printf("hellow");
printf("%d",b);
}
輸出:
6
的printf( 「消息」)是返回「沒有預定義的方法。的本消息」如上面的例子中的字符
你代碼:
int main (void){
const int y = 99;
printf("%d\n", printf("y = %d", y));
}
注:在打印該消息的printf()之後始終返回int值是否定的,因爲返回類型的字符的printf()的類型爲int型
步驟1:內printf()函數打印99第一
步驟2:在食堂字符執行後返回6,其是否定的。年齡。
消息是 「Y =%d」
步驟3:6是由外部的printf保持()函數爲: -
printf("%d",6);
所以,它使輸出combinely:
996
不,'printf' _doesn't_不返回已打印的字符串。印刷本身只是一個副作用。 – ForceBru
如果你[查找](http://pubs.opengroup.org/onlinepubs/009695399/functions/fprintf.html)printf,你會看到什麼是返回值。 – user2357112