-2
int main()
{
printf("Hello World!");
printf("%s");//printing Hello World again why?
}
此代碼打印「Hello World!」兩次。爲什麼會發生這樣的事情?C:僅使用字符串格式作爲參數的printf
int main()
{
printf("Hello World!");
printf("%s");//printing Hello World again why?
}
此代碼打印「Hello World!」兩次。爲什麼會發生這樣的事情?C:僅使用字符串格式作爲參數的printf
printf("%s")
導致未定義的行爲。
一旦你在你的程序中有該行,你的整個程序就變得沒有定義,可以做或不做任何事情。
最有可能的,通過完整的運氣,你的籌碼仍然包含指針從一個呼叫的文字字符串,因此功能仍然能夠正確執行。
」* ...完成[壞]運氣... *「 – alk
我想你的意思是'printf(「%s」);' –
未定義的行爲。在這種情況下,過去的東西(指向字符串的指針)在現在被使用 - 函數調用期望從未給出的參數。回答這個問題並沒有真正的目的。 – enhzflep
因爲您遇到未定義的行爲。你碰巧通過編寫錯誤的代碼來獲取內存的內容。如果你做了一件完全錯誤的事情,當你得到一些無法解釋的結果時,你不會感到驚訝。 「 –