为什么printf()在应该为0时给出随机输出?

Am3*_*33d 0 c printf gcc c99

因此printf()是一个函数,如果发生错误,它返回成功或负值时写入的字符数,看这个例子,预期的输出为零.

#include <stdio.h>    
int main(void) 
{     
printf("%d");    
return 0;
}
Run Code Online (Sandbox Code Playgroud)

现在当我添加更多这些%d: http ://ideone.com/brw5vG输出更改为: 0 134513819 -1216430092 134513808

我无法弄清楚随机垃圾值是什么?输出中也有负值,负值可以证明错误是正确的,所以任何人都可以确切地指出这里的错误是什么吗?请简明扼要,具体.谢谢.

jua*_*nza 5

因为"%d"意味着整数是预期的.你没有传递任何东西,所以你得到了未定义的行为.

请注意,g ++ 4.8.2提供了一个有用的警告:

警告:格式'%d'需要匹配的'int'参数[-Wformat =]

类似于clang ++ 3.4:

警告:比数据参数更多'%'转换[-Wformat]