【发布时间】:2014-07-20 09:48:23
【问题描述】:
我正在阅读 Brian Kernighnan 和 Dennis Ritchie 的 Programming in C (第 25 页底部)
作者在此引用:
power计算的值通过return语句返回给main。任何表达式都可以跟在 return 后面:return expression ;
但是在他上面提供的代码中:
#include <stdio.h>
int power(int m , int n);
main()
{
int i;
for (i = 0; i < 10; ++i)
printf ( " %d \t %d \t %d \n ", i, power( 2 , i), power( -3 , i));
return 0;//no. 1
}
int power(int m , int n)
{
int i, p ;
p = 1;
for (i = 1; i <= n; ++i)
p = p * m;
return p; //no. 2
}
这里我明白了他为什么在函数幂中使用 2.return p;(即获取 p 的值),但他为什么使用 1.return 0;?
我尝试删除行 return 0; 并且它仍然像我想的那样工作,是我遗漏了什么吗??
[更新]
很抱歉之前没有包括在内,但我已经知道很多了:
书中引用:
您可能已经注意到,在末尾有一个 return 语句 主要的。由于 main 和其他函数一样,它可能会返回一个值 到它的调用者,这实际上是程序所在的环境 被处决。通常,返回值为零意味着正常 终止;非零值表示异常或错误终止 状况。为了简单起见,我们省略了 return 到目前为止,我们的主要功能的陈述,但我们将 以后包括它们,以提醒程序应该返回 环境的状态。
感谢@Pascal,我能够理解 return p; 的区别。并返回 0; 然而,我的意图是永远不知道返回 0 是什么;但是为什么用return也是为了知道return语句的区别……
【问题讨论】:
-
表示程序运行没有任何问题。通常,当程序遇到错误或问题时,会返回一个非 0 的整数,以向用户指示发生了错误。
-
我认为不应将 C 函数作为 C++ 函数的副本关闭,尤其是在这两种语言之间存在细微差别的情况下。
-
@PascalCuoq 我理解 C 和 C++ 不一样,但我认为“重复”问题的答案完美地描述了 OP 想要知道的内容 - main() 中的 return 语句是什么对于,因此我认为将其标记为重复是合适的
-
@TimCastelijns 我不知道我的英语不好是什么大惊小怪,但我想知道回报 p 有什么不同;并返回 0;我也是一个初学者,我不明白我自己的代码是什么意思,你希望我理解别人的代码??有点同情……
-
没什么大惊小怪的。我将您的问题标记为重复,因为(除了语言差异)它几乎是完全重复的,而另一个问题有一个很好的答案,也适用于您的问题。我不是坏人,我只是想帮忙