c语言入门函数调用问题,为什么没有return a;第一回返回7,第二回返回4?这个4是怎么算的?

必采纳!intss(inta);intss(inta){a=a+2;printf("%d\n",a);//returna;//如果没这returna;句返回第一个正确,第... 必采纳!int ss(int a);int ss(int a){ a=a+2; printf("%d\n",a); //return a; //如果没这return a;句返回第一个正确,第二个就错误}int main(){ int a=5; ss(ss(a)); return 0;} 展开
 我来答
最大的宝宝
2021-04-07 · TA获得超过828个赞
知道小有建树答主
回答量:1569
采纳率:67%
帮助的人:404万
展开全部
1)正常情况下,如果没有return,代码至少应有警告级别以上的提示。假如编译器只是给出一个警告而不升级为错误,就看2)
2)从稍低一层的角度来说,函数的返回值一般放于EAX寄存器。这就是说,即使ss(a)没有提供返回值,EAX中的值仍代表了返回值,只不过它的值此时可能只是一个临时值。在以上代码中,这个值为2。故下一次ss(2)就输出了4
追问
感谢
匿名用户
2021-04-07
展开全部
行为未定义,返回值4是一个未知数,即然写明了返回类型,就别钻牛角了
打个比方,汇编中用寄存器eax保存返回值,如果ss函数没指明返回值(即没更改eax的值),所以返回的eax的当前值是未知的
追问
谢谢您
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式