這兩個printf語句為什么不一樣呢,求區別
#include <stdio.h>
int main()
{
??? printf("你是我的小呀小蘋果兒\n"
??? "怎么愛你都不嫌多\n"
??? "紅紅的小臉兒溫暖我的心窩\n"
??? "點亮我生命的火 火火火火\n");
??? return 0;
}
#include <stdio.h>
int main()
{
??? //這是一首思念家鄉的詩
??? printf("床前明月光,");
??? printf("疑是地上霜。");
??? printf("舉頭望明月,");
??? printf("低頭思故鄉。");
??? /*短短四句詩,寫得清新樸素,明白如話。它的內容是單純的,但同時卻又是豐富的。
??? 它是容易理解的,卻又是體味不盡的。詩人所沒有說的比他已經說出來的要多得多。
??? 它的構思是細致而深曲的,但卻又是脫口吟成、渾然無跡的。從這里,我們不難領
??? 會到李白絕句的“自然”、“無意于工而無不工”的妙境。*/
?return 0;???
}
看著兩個他的printf語句不一樣呢,第一個只有一個printf但是第二個每條語句前都有printf,求大神解惑
2015-08-07
printf的第一個參數就是字符串,準確地說叫格式化字符串。printf會把這個字符串輸出,如果其中包含格式化指示符(%d %f等),就按順序將后面參數放到格式化字符串的相應位置輸出。
第二個例子中就是用了4個printf輸出了4句詩。因無需加入其他格式化指示,故直接把要輸出的句子作為第一個參數了。
第一個例子其實也是一樣的,只是用了一個printf語句,參數是一個包含了4句話 4個換行的字符串。
這里用到C語言的一個特性:如果兩個字符串字面量(指用雙引號括起來的字符串)緊挨著,或之間只有空白相隔,就自動將這兩個字符串接成一段字符串。 注意C語言將空格 tab 回車都視作空白字符(blank),所以即便這4句話寫在了4行,但它們之間沒有其他C語言的符號,C仍會將它們自動連接成一個字符串。于是這句代碼其實是這樣的:
printf("你是我的小呀小蘋果兒\n怎么愛你都不嫌多\n紅紅的小臉兒溫暖我的心窩\n點亮我生命的火?火火火火\n");這樣printf的第一個參數還是一個字符串,可以正常輸出。
這個特性其實就是可以讓你把一個很長的字符串寫在多行上,這樣代碼更容易讀。
2015-08-07
第一個是輸出整段文字,第二個是逐行輸出文字。