C:printf,只有字符串格式作为参数

时间:2016-10-22 04:31:23

标签: c printf string-formatting

int main()
    {

       printf("Hello World!");        
       printf("%s");//printing Hello World again why?

    }

此代码打印“Hello World!”两次。为什么会这样发生?

1 个答案:

答案 0 :(得分:3)

printf("%s")导致未定义的行为。

一旦你的程序中有了这一行,整个程序就变得不明确,可以做或不做任何事。

最有可能的是,通过完全运气,您的堆栈仍然包含指向前一次调用的文字字符串的指针,因此该函数仍然能够正确执行。