printf("%d")?

c语言printf("%d");vc下不会报错,但结果是2433316,而且每次都是,说明不是随机数,那究竟为什么每次都是2433316呢windows下每次编译后都一样... c语言printf("%d");
vc下不会报错,但结果是2433316,而且每次都是,说明不是随机数,那究竟为什么每次都是2433316呢
windows下每次编译后都一样,不过在linux下每次都不一样,很奇怪
展开
 我来答
阳光上的桥
2008-06-29 · 知道合伙人软件行家
阳光上的桥
知道合伙人软件行家
采纳数:21424 获赞数:65782
网盘是个好东东,可以对话和传文件

向TA提问 私信TA
展开全部
对于同一个EXE文件,可能每次都相同,但是只要你重新编译一下,生成一个新的EXE文件,可能结果就不是2433316了。

这属于典型了参数不够的情况,因为C语言的堆栈是调用者维护,所以printf函数的参数太多、太少都不报错,程序编译为汇编代码时候,是主程序完成一系列的参数入栈(PUSH),然后进行一个CALL,子程序里面使用参数都是一系列的[BP+N]来实现的,当参数不符合预期的时候,[BP+N]还是能取到一个内存中的数据,只是位置和内容都不是我们所意料的,而且在WIN32平台的保护模式下,甚至这样会造成内存访问出错。
tanarri
2008-06-29 · TA获得超过1.1万个赞
知道大有可为答主
回答量:5123
采纳率:33%
帮助的人:8049万
展开全部
你把这一句换一个地方放就不是那个数了
你没给%d的变量,它就找后面的地址存放的数,跟你程序位置有关。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式