求助,有返回值的函数,但在代码里直接return

chxy85 2011-09-13 09:50:54
int fun()
{
return;
}
这种情况似乎会返回随机值,请问原理是什么。从哪取的值?
...全文
233 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
chxy85 2011-09-13
  • 打赏
  • 举报
回复
可以确定,是从eax寄存器取的值,不过对这块不是很清楚,还得学习下啊
小笨熊 2011-09-13
  • 打赏
  • 举报
回复
这个问题。。。
辰岡墨竹 2011-09-13
  • 打赏
  • 举报
回复
如果不写return的话,对于int型的会自动返回0。
但是如果写了return不写值的话,C编译器一般用EAX寄存器作为返回值。
不知道EAX的话,去看80x86 CPU架构。
yuyan_linger 2011-09-13
  • 打赏
  • 举报
回复
c++编译器肯定报错的 但是如果是下面这样 就只有警告而已了 至于返回值 debug和release下一般处理是不一样的
int f()
{
if(0)
{ return 1;}
}
chxy85 2011-09-13
  • 打赏
  • 举报
回复
eax值在哪。?。eax值在哪。?。
worldy 2011-09-13
  • 打赏
  • 举报
回复
原型定义有返回值得情况下,编译器会在栈空间里确定一个位置返回数据(即将返回值拷贝到该位置)
当你使用Return aVal 返回,则会将aVal拷贝到返回位置里,使用Return 则不会拷贝值到该返回位置
那么,该返回位置上的内容将是不定的,原来是什么就是什么,所以你的到的是个随机数!
jackyjkchen 2011-09-13
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 maxwell 的回复:]

我记得好像在vc6下c++代码不写return不报错,有次改别人的代码发现是一个分支漏了return。
[/Quote]
分支遗漏只会给警告
luciferisnotsatan 2011-09-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jackyjkchen 的回复:]

C的话这个函数不写return都没事,C++会错

也不是随机值,就是原来eax的值,x86的返回值小于4字节就存在eax里
[/Quote]
++

语言规定就是这样

vc里,文件名后缀.c,按C来编。后缀.cpp,按C++编
zyc_glboy 2011-09-13
  • 打赏
  • 举报
回复
没这么写过,要是这个函数没什么用干嘛不返回0
或者返回值设为void
Maxwell 2011-09-13
  • 打赏
  • 举报
回复
我记得好像在vc6下c++代码不写return不报错,有次改别人的代码发现是一个分支漏了return。
healer_kx 2011-09-13
  • 打赏
  • 举报
回复
最好报错! C#里面有一个路径你不返回值都会报错呢。
jackyjkchen 2011-09-13
  • 打赏
  • 举报
回复
C的话这个函数不写return都没事,C++会错

也不是随机值,就是原来eax的值,x86的返回值小于4字节就存在eax里
jackyjkchen 2011-09-13
  • 打赏
  • 举报
回复
C++会报错吧

C不记得了,好像可以
至善者善之敌 2011-09-13
  • 打赏
  • 举报
回复
一般VOID类型函数才返回return;
AnwJiango 2011-09-13
  • 打赏
  • 举报
回复
确定能编译过 ?
turing-complete 2011-09-13
  • 打赏
  • 举报
回复
发两遍这个问题,值得投诉一下了,着实让人纠结,CSDN怎么搞的?

65,189

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧