-1
我正在爲我的測試而學習,並且遇到了一個體面結果奇怪的代碼。我明白main()中前兩行的結果,但我不明白爲什麼我的電腦會打印出像圖片這樣的答案!爲什麼最後的代碼返回這樣的結果? (在C)
#include <stdio.h>
void printstring(char s[]) {
int i;
for (i = 0; i < 10; i++)
printf(" s[%d]", i);
printf("\n");
for (i = 0; i < 10; i++)
printf("%5c", s[i]);
printf("\n");
for (i = 0; i < 10; i++)
printf("%5X", s[i]);
printf("\n");
printf("\n");
}
main() {
printstring("I am beautiful");
printstring("beautiful");
printstring("");
}
您通過訪問字符串的實際長度來調用*未定義的行爲 – UnholySheep
我對C完全陌生,所以我不確定爲什麼它是未定義的行爲。 –
「美麗」裏有幾個字符? ''「'中有多少個?當你走出數組的邊界(和字符串*是數組)時,你會怎麼想? –