有返回值类型的函数必须返回一个值吗?

Expect_excellent 2014-08-10 08:34:43
c++ primer上的一句话我有点不解,
如果函数的返回类型不是void,那么它必须返回一个值。
int func(){
...//return **; 这条语句是必须的吗?
}

我的编译器dev-cpp,如果不写编译器自动返回一个不确定的值,其他的编译器允许吗?
...全文
1945 28 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
Heaydeny 2014-09-10
  • 打赏
  • 举报
回复
,用赵四老师那句话:“不要写连自己也预测不了结果的代码”
Saleayas 2014-09-09
  • 打赏
  • 举报
回复
写一个函数,你不仅需要有函数签名,还要有参数契约。 如果你有返回值,那么你就需要告诉呼叫者,返回值的意义。 现在你返回一个不确定的值,你敢吗?呼叫者可能会使用这个返回值的。
边走边瞧 2014-09-09
  • 打赏
  • 举报
回复
引用 10 楼 zhao4zhong1 的回复:
不要迷信书、考题、老师、回帖; 要迷信CPU、编译器、调试器、运行结果。 并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。 任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实! 有人说一套做一套,你相信他说的还是相信他做的? 其实严格来说这个世界上古往今来所有人都是说一套做一套,不是吗? 不要写连自己也预测不了结果的代码!
赵老师,恭喜你多了一个粉丝。
fanyue1989 2014-09-09
  • 打赏
  • 举报
回复
没见过能编译通过的编译器
lm_whales 2014-08-19
  • 打赏
  • 举报
回复
另外,有些特殊情况,可能不写返回值 例如, 写某些嵌入汇编的的代码, 该代码已经处理好, 函数返回值问题。 那只是一种特殊技巧, 一般情况你也用不到, 编译器也可能不支持, 所以还是别要理他为妙。
风行踩火轮 2014-08-18
  • 打赏
  • 举报
回复
这个肯定是需要的,因为这个是一般编译器的规则,如果你非要修改编译器的规则,那也是可以的啊,规则都是认定的,只是被大家接收的程度不同罢了
谁和谁相遇 2014-08-18
  • 打赏
  • 举报
回复
建议是带,比较规范一些
zhengjian7788 2014-08-17
  • 打赏
  • 举报
回复
引用 12 楼 u012184298 的回复:
返回。
最近这个头像见得有点多,难道是同一个人?
熊熊大叔 2014-08-17
  • 打赏
  • 举报
回复
大部分编译器应该都会报warning, 然后返回一个随机值。 首先你要明白return是怎么回事。在汇编层次上,return就是把返回值写到一个约定的寄存器里(比如x86的EAX, PowerPC的r3),然后上一级函数会从这个寄存器里读出返回值。 如果你的函数里没有return就返回了,那这个寄存器的值就会保留之前计算的结果,然后上一级函数也会把这个值读出来,从逻辑上讲就是一个随机值。 从软件的设计上讲,除非是故意设计成随机数,否则每个函数对于固定的输入都应该有固定的输出,这样程序才是可测试、可靠的。尤其是这个函数可能被其他程序员调用时,这个原则是必须的。
  • 打赏
  • 举报
回复
自己定义函数的时候,告诉编译器,我这个函数要返回一个值,然后在编写函数代码的时候,又不返回值,虽然编译器是程序,不是人,但你这么对待编译器,是不是有自己打自己脸的嫌疑呀,如果函数不打算返回任何值,你直接定义成不返回值的函数就完了。最后总结,你不适合做程序员,前后逻辑思维极其混乱!
运维爱编程 2014-08-16
  • 打赏
  • 举报
回复
VC++6.0 return这个值必须有,要不就会报错!
lm_whales 2014-08-14
  • 打赏
  • 举报
回复
可以不加,如果程序出错,你可以接受的话。 既然有返回值,说明在某种时候,需要用到这个返回值。 这个返回值,当然要表示某种意义。 如果,不给出这个返回值,任由系统处理,结果不确定。 那么,使用这个函数的代码, 就无法处理,这种无法预测的结果, 这种情况不是你期待的
杜一素 2014-08-14
  • 打赏
  • 举报
回复
可以不加,如果能编译通过的话
wangen12345 2014-08-13
  • 打赏
  • 举报
回复
可以这样吗?长见识了。。。。
Expect_excellent 2014-08-13
  • 打赏
  • 举报
回复
引用 10 楼 zhao4zhong1 的回复:
不要迷信书、考题、老师、回帖; 要迷信CPU、编译器、调试器、运行结果。 并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。 任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实! 有人说一套做一套,你相信他说的还是相信他做的? 其实严格来说这个世界上古往今来所有人都是说一套做一套,不是吗? 不要写连自己也预测不了结果的代码!
赵老师的回答总是和别人不一样,喜欢。
c_str 2014-08-12
  • 打赏
  • 举报
回复
根据需要来呗。不想返回就void。最好按照严格的标准。
百曉生 2014-08-11
  • 打赏
  • 举报
回复
返回值类型,最好加上返回值,这点不需要多考虑吧
赵4老师 2014-08-11
  • 打赏
  • 举报
回复
不要迷信书、考题、老师、回帖; 要迷信CPU、编译器、调试器、运行结果。 并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。 任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实! 有人说一套做一套,你相信他说的还是相信他做的? 其实严格来说这个世界上古往今来所有人都是说一套做一套,不是吗? 不要写连自己也预测不了结果的代码!
NianNian酱 2014-08-11
  • 打赏
  • 举报
回复
返回。
max_min_ 2014-08-11
  • 打赏
  • 举报
回复
这个问题不算问题吧!
加载更多回复(8)

33,322

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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