Skip to content

Conversation

frederick-vs-ja
Copy link
Contributor

@frederick-vs-ja frederick-vs-ja commented Aug 13, 2024

main 函数结尾处不写 return 语句等价于 return 0;。在正常执行中我们不需要写显式的 return 语句。

Closes #5.

在 `main` 函数结尾处不写 `return` 语句等价于 `return 0;`。在正常执行中我们不需要写显示的 `return` 语句。
@Mq-b
Copy link
Contributor

Mq-b commented Aug 13, 2024

编译器会特殊处理 main 函数:在 main 函数的结尾处如果没有 return 语句,则等价于执行 return 0;

我觉得此处描述还不够严谨,也不够直观。

编译器会特殊处理 main 函数,main 函数的函数体不需要包含 return 语句:因为当控制达到 main 函数体的末尾而未遇到返回语句时,它的效果是执行 return 0;

我认为 “当控制达到 main 函数体的末尾而未遇到返回语句时,它的效果是执行 return 0;” 这句话的意思是不该被省略的。

当前修改的描述的潜在含义是:main 函数的结尾如果没有 return 语句,编译器会直接加上一个 return 0。并没有强调是执行到结尾,或许其他修改也不需要,总而言之我认为得强调是:“执行到结尾”

另外严格意义来说:“在 main 函数的结尾处如果没有 return 语句,则等价于执行 return 0;这句话如果单字面意思,其实是错的

main 函数结尾没有 return 语句,怎么会等价直接执行 return 0 呢?怎么执行?在哪执行?

我觉得我们的措辞应该尽可能符合最朴实的自然语言的带入思考,尤其这只是一个简单的内容。我们都能明白这句话的意思,只是因为我们有着足够的前置知识。

@archibate archibate merged commit ccc56d3 into parallel101:main Aug 14, 2024
@frederick-vs-ja frederick-vs-ja deleted the main-return-0 branch August 14, 2024 05:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

有返回值函数(除了特殊的)不写 return 是未定义行为
3 participants