C語言的輸出結果
大家說得都有道理,我來給樓主分析一下吧
首先,由于 i++ 是先使用 i 的值,之后再把 i 的值加 1,所以
while(i<6)printf("%s\n",str+i++); 其實是等價于
while(i<6)
{
printf("%s\n",str+i);
i++
}
再次,str+i 在 printf("%s\n",str+i)是當作指針來使用,因為
str[]={'S','H','\0','W','H','Y','\0'} ,所以 str+i 指令的內容隨著 i 的不同而不同,當 i 為
0 時,str+i 指向 {'S','H','\0','W','H','Y','\0'}
1 時,str+i 指向 {'H','\0','W','H','Y','\0'}
2 時,str+i 指向 {'\0','W','H','Y','\0'}
3 時,str+i 指向 {'W','H','Y','\0'}
4 時,str+i 指向 {'H','Y','\0'}
5 時,str+i 指向 {'Y','\0'}
6 時,str+i 指向 {'\0'} ,但此時循環不成立,printf沒有執行
而 printf 在輸出 %s 的類型時,是把字符一個一個地輸出,直到遇到 '\0',當然'\0'是不是輸出的。
最后,我們來連循環語句也一起分析吧,程序執行到循環while,此時 i 為0,也就是說str+i 指向 {'S','H','\0','W','H','Y','\0'}了,printf函數開始,它輸出 S 再到 H ,之后遇到'\0'停止,%s這個也就輸出完,不要忘記了%s后面還有個 \n 也要輸出的,輸出 \n 也就是換行了,輸出完了,i就++了,第一次循環就完了,之后就執行第二遍循環,此時 i 為 1,也就是 str+i 指向 {'H','\0','W','H','Y','\0'} ……………………后面的樓主自己來分析吧,結果為:
SH
H
WHY
HY
Y
語句 printf;輸出結果是什么
printf函數的作用,打印東西到屏幕上
語句 printf;輸出結果的第一種方式:
printf("I Love you "); 原樣輸出語句 printf;輸出結果的第二種方式:
printf("I Love your"
"but you do not Love me");語句 printf;輸出結果的第三種種方式:
printf("%d",a); //%d 格式控制字符,打印 a語句 printf;輸出結果的第四種方式:
printf("\n"); //打印轉移字符
//轉移字符具有特殊的含義\t 代表制表符,就是三個空格,等效于tab鍵
\n代表換換,就是回車鍵
轉移字符都是具有特殊的含義的,他們打印不出來, 只能有一種效果