一个非void型函数可以没有return?

WeHentai
  • 143

图片描述
如图,creatOne没有返回一个值,但是可以成功编译并运行
图片描述

编译器是code::block 16.01自带的mingw-gcc

回复
阅读 3.1k
3 个回答

在X86架构下, 函数的返回值一般是放到$EAX中的, 在你的例子中,很可能编译器"意外"或者有意的把newst的地址放到了这个寄存器, 所以你在main中还是能得到这个返回值。
你加个-Wall在你编译的时候, 应该会有警告。你也试试用不同的optimization level,看看结果会不会变化

可以把代码贴下,我在我这边测试下。

pocztek
  • 2
新手上路,请多包涵

根据 K&R《C程序设计语言(第二版 · 新版)》的说法,“return语句后面可以没有任何表达式,此时函数不会向调用者返回任何值”。我做了几个测试,编译时只会出警告,“ ' return' with no value, in function returning non-void”,并不会报错。

宣传栏