首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

哪位大牛能解释下这段代码的输出结果啊跟printf()的实现机制有关。多谢

2012-04-16 
哪位大牛能解释下这段代码的输出结果啊!跟printf()的实现机制有关。谢谢!#include stdio.hint main(){pri

哪位大牛能解释下这段代码的输出结果啊!跟printf()的实现机制有关。谢谢!
#include <stdio.h>

int main()
{
  printf("%d\n");
  return 0;
}

[解决办法]

探讨
回复2楼。编译器能正确输出结果。正是因为能输出结果所以我才来问啊。。。纠结了好久。。

[解决办法]
探讨

回复2楼。编译器能正确输出结果。正是因为能输出结果所以我才来问啊。。。纠结了好久。。

[解决办法]
看看标准的规定吧:
If there are insufficient arguments for the format, the behavior is
undefined.
[解决办法]
探讨

我试了在vc下面跟c-free下面结果不同。
而且 printf("%d %d %d %d\n");vc前三个输出是随机的,然后后面的就是会输出int类型的默认值了。
而c-free是随机的。求解答啊、

[解决办法]
要解释很简单,你没提供参数,那么编译器就在你的栈上找个值作为%d的参数解释呗。 你可以这句前面定义一些变量再输出看看
[解决办法]
探讨

引用:

引用:

我试了在vc下面跟c-free下面结果不同。
而且 printf("%d %d %d %d\n");vc前三个输出是随机的,然后后面的就是会输出int类型的默认值了。
而c-free是随机的。求解答啊、


未定义行为就是这样的,输出什么都是可以的.

你可以认为这是错误的程序,不该讨论其结果.
但是我又测试了很……

[解决办法]
因为vc的release没有填充值。
vc的debug一般会填充一些固定的特殊值以供调试。
比如cc,cd

热点排行