积极答复者
一个函数两个return

问题
-
在《The C Programming Language B.W.Kernighan&D.M.Ritchie》书的7.5节中的实例有两个return,我的理解是无论第一个return语句执行与否,第二个return语句一定执行,但是这本书这么权威不可能出错,所以我很迷惑,不知道我的理解哪里有问题,每次都执行最后一个return语句为什么还要在前面写一个return语句。(又没有break类似功能的语句跳出)
代码如下:
#include <stdio.h> /* cat: concatenate files, version 1 */ main(int argc, char *argv[]) { FILE *fp; void filecopy(FILE *, FILE *) if (argc == 1) /* no args; copy standard input */ filecopy(stdin, stdout); else while(--argc > 0) if ((fp = fopen(*++argv, "r")) == NULL) { printf("cat: can't open %s\n, *argv); return 1; } else { filecopy(fp, stdout); fclose(fp); } return 0; } /* filecopy: copy file ifp to file ofp */ void filecopy(FILE *ifp, FILE *ofp) { int c; while ((c = getc(ifp)) != EOF) putc(c, ofp); }
煮酒论英雄
- 已编辑 仙人球球 2012年2月28日 2:20 编写错误
答案
-
C/C++ 中的reutrn语句:
通过在函数中使用返回语句,返回一个值给函数,同时终止函数的调用,返回主函数。
格式:
return (表达式);
或return 表达式;
功能:
(1)计算表达式的值,将表达式的值返回给函数。
(2)从被调用的函数返回主调函数。
说明:
(1)返回值类型应和函数类型一致,不一致将返回值自动转换成函数类型。
(2)函数中可以有多条返回语句,这时一般与if语句联用,执行到哪一条返回语句,哪条返回语句起作用。
(3)函数中无return语句,执行至函数体结尾时返回,此时将返回一个不确定的值给函数。
(4)如果只需要从函数中返回,而不需带回值,使用不带表达式的return语句。Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
- 已标记为答案 仙人球球 2012年2月28日 9:19
全部回复
-
C/C++ 中的reutrn语句:
通过在函数中使用返回语句,返回一个值给函数,同时终止函数的调用,返回主函数。
格式:
return (表达式);
或return 表达式;
功能:
(1)计算表达式的值,将表达式的值返回给函数。
(2)从被调用的函数返回主调函数。
说明:
(1)返回值类型应和函数类型一致,不一致将返回值自动转换成函数类型。
(2)函数中可以有多条返回语句,这时一般与if语句联用,执行到哪一条返回语句,哪条返回语句起作用。
(3)函数中无return语句,执行至函数体结尾时返回,此时将返回一个不确定的值给函数。
(4)如果只需要从函数中返回,而不需带回值,使用不带表达式的return语句。Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
- 已标记为答案 仙人球球 2012年2月28日 9:19