-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
因为您遇到未定义的行为。你碰巧通过编写错误的代码来获取内存的内容。如果你做了一件完全错误的事情,当你得到一些无法解释的结果时,你不会感到惊讶。 “ –