是关于C语言中“return 0"的问题

作者&投稿:点鬼 (若有异议请与网页底部的电邮联系)
return的关于C语言中return的一些总结~

return是C++预定义的语句,它提供了终止函数执行的一种放大。当return语句提供了一个值时,这个值就成为函数的返回值.说到return,有必要提及主函数的定义,下面是从网络上找到的资料,好好消化吧,对了解主函数中返回值的理解有很大的帮助.很多人甚至市面上的一些书籍,都使用了void main( ) ,其实这是错误的。C/C++ 中从来没有定义过void main( ) 。C++ 之父 Bjarne Stroustrup 在他的主页上的 FAQ 中明确地写着 The definition void main( ) { /* ... */ } is not and never has been C++, nor has it even been C.( void main( ) 从来就不存在于 C++ 或者 C )。下面我分别说一下 C 和 C++ 标准中对 main 函数的定义。 在 C89 中,main( ) 是可以接受的。Brian W. Kernighan 和 Dennis M. Ritchie 的经典巨著 The C programming Language 2e(《C 程序设计语言第二版》)用的就是 main( )。不过在最新的 C99 标准中,只有以下两种定义方式是正确的:int main( void )int main( int argc, char *argv[] )(参考资料:ISO/IEC 9899:1999 (E) Programming languages — C 5.1.2.2.1 Program startup)当然,我们也可以做一点小小的改动。例如:char *argv[] 可以写成 char **argv;argv 和 argc 可以改成别的变量名(如 intval 和 charval),不过一定要符合变量的命名规则。如果不需要从命令行中获取参数,请用int main(void) ;否则请用int main( int argc, char *argv[] )。main 函数的返回值类型必须是 int ,这样返回值才能传递给程序的激活者(如操作系统)。如果 main 函数的最后没有写 return 语句的话,C99 规定编译器要自动在生成的目标文件中(如 exe 文件)加入return 0; ,表示程序正常退出。不过,我还是建议你最好在main函数的最后加上return 语句,虽然没有这个必要,但这是一个好的习惯。注意,vc6不会在目标文件中加入return 0; ,大概是因为 vc6 是 98 年的产品,所以才不支持这个特性。现在明白我为什么建议你最好加上 return 语句了吧!不过,gcc3.2(Linux 下的 C 编译器)会在生成的目标文件中加入 return 0; 。 C++98 中定义了如下两种 main 函数的定义方式:int main( )int main( int argc, char *argv[] )(参考资料:ISO/IEC 14882(1998-9-01)Programming languages — C++ 3.6 Start and termination)int main( ) 等同于 C99 中的 int main( void ) ;int main( int argc, char *argv[] ) 的用法也和 C99 中定义的一样。同样,main 函数的返回值类型也必须是int。如果main函数的末尾没写return语句,C++98 规定编译器要自动在生成的目标文件中加入 return 0; 。同样,vc6 也不支持这个特性,但是 g++3.2(Linux 下的 C++ 编译器)支持。 main 函数的返回值用于说明程序的退出状态。如果返回 0,则代表程序正常退出,否则代表程序异常退出。下面我们在 winxp 环境下做一个小实验。首先编译下面的程序:int main( void ){return 0;}然后打开附件里的“命令提示符”,在命令行里运行刚才编译好的可执行文件,然后输入“echo %ERRORLEVEL%”,回车,就可以看到程序的返回值为 0 。假设刚才编译好的文件是 a.exe ,如果输入“a && dir”,则会列出当前目录下的文件夹和文件。但是如果改成“return -1”,或者别的非 0 值,重新编译后输入“a && dir”,则 dir 不会执行。因为 && 的含义是:如果 && 前面的程序正常退出,则继续执行 && 后面的程序,否则不执行。也就是说,利用程序的返回值,我们可以控制要不要执行下一个程序。这就是 int main 的好处。如果你有兴趣,也可以把 main 函数的返回值类型改成非 int 类型(如 float),重新编译后执行“a && dir”,看看会出现什么情况,想想为什么会出现那样的情况。顺便提一下,如果输入 a || dir 的话,则表示如果 a 异常退出,则执行 dir 。 (intargc,char*argv[],char*envp[])这当然也不是标准 C 里面定义的东西!char*envp[] 是某些编译器提供的扩展功能,用于获取系统的环境变量。因为不是标准,所以并非所有编译器都支持,故而移植性差,不推荐使用。到了这里,你应该了解为什么主函数定义为 int返回类型,而且函数体里面有return 0;这个语句了吧.下面具体说说我对return的应用的理解。只要一个函数的返回值是数字型的,那么就可以返回0(即return 0),其实你返回多少都没问题。一般情况下,C++做出来的函数都要求返回一个值,当函数执行正常,且达到了一般情况下的目的,那么就返回0表示正确的调用了该函数,这个0就是返回给主调函数以通知没有出错的;如果函数调用中出错,或者没有按照一般情况执行,那么就返回1,以告知主调函数采取响应策略;如果你在某个函数所在类的定义所在的头文件中定义了一组状态值(一般都是负整数),那么函数就可以返回不同的值以告之主调函数具体发生了什么异常或错误,这种情况一般用于函数功能独立性较差的的情况。所以一般不鼓励把函数返回类型定义为void,至少返回应该是int,而在函数的最后加上return 0.语句:int func(参数列表){………………Return 0;}在函数中,如果碰到return 语句,那么程序就会返回调用该函数的下一条语句执行,也就是说跳出函数的执行,回到原来的地方继续执行下去。但是如果是在主函数中碰到return语句,那么整个程序就会停止,退出程序的执行。如果你定义一个函数有返回类型,可以想下面那样调用: int func(){int value;………………return value;}int main(){int intvalue;intvalue=func();…………return 0;}return语句后面具体是什么内容,这就要具体情况具体分析了:(1) 在返回类型是char的函数中,return后应该是char类型的值;(2) 在返回类型是int的函数中,如果是要停止函数的调用,最好应该为0;其他的按照你的目的而定,只要是int 类型就行了(3) 在返回类型是结构类型的函数中,return后应该是结构的一个实例对象。总之,函数定义为什么样的返回类型,该函数中return后就应该是相应类型的值。 return 语句:在程序中return 语句是返回方法的结果值,并终止当前方法。

main函数正常运行之后一般要return 0;
main函数是 int 型函数,正常运行之后将退出 整个程序并返回操作系统,这个返回值可以 是0,也可以不是0,只要是 "整数值" 就可以了。这个返回值 供 操作系统 后续程序使用。数值大小 与 逻辑值 真假无关系。
对初级程序员来说,可以不必 深究返回值 有何意义,如何使用。

main的返回值是返回给操作系统的,习惯上把程序正常结束的返回值指定为0(仅仅是习惯,开发者可以指定任何值)而异常结束则返回其他的值,在操作系统下可以访问相关环境变量取得程序的返回值来确定发生了什么情况(windows下该环境变量的名称是 "ERRORLEVEL" )

 

比如可用 echo %ERRORLEVEL% 命令来显示最后一条命令的返回值

举个例子

打开cmd窗口

执行 dir 命令

再执行 echo %errorlevel%  会显示0,说明上一个dir正常结束

再执行dir胡乱加个不存在的参数

再执行 echo %errorlevel%  会显示1  说明上一个dir发生了异常,返回1的含义就看开发者的意图了,对于windows这样的大型商业软件可以查命令手册获得返回含义,这里的1就是参数不正确的意思

再胡乱执行一个不存在的命令

再执行 echo %errorlevel%  会显示9009,说明最后一条命令发生9009异常:不存在的命令文件,这是cmd shell返回的

如图:

 

总之,main的返回值就是给操作系统提供情况的(因为main是被操作系统调用的),和局部函数一样,返回值是提供给调用它的函数的



main 中退出前的 return 一般默认 0 为程序正常退出。

所以在程序正常运行结束退出时用 return 0.

如果你的程序是非正常退出,当然可以 return 其他数值,没有说任何情况下都要 return 0啊。

例如你的程序到最后求一个数值 a ,期待它应该是 100 的时候正常退出,就可以这样:


int main() {
    int a;
// 前面一些其他运行
// ....
// 到最后
    if (a == 100) {
        return 0;
    } else {
        return -1;
    }
}


一般只有主函数中才会写return 0,只是系统默认而已,也可以是其他的值

在最开始的时候,都是命令行程序,有时候需要程序级联,比如在第一个程序中会新建一个子进程,并且等待子进程的结束,判断子进程有没有正常结束,正确执行的时候会用到子进程的返回值,默认正常结束的时候返回值就是0,如果其他值就是错误。是个约定俗成的,大家都遵守的规则。

如果你的程序正常返回非零值,别人还遵守这个规则来调用你的程序的话,就可能误判了。

其实主函数没什么用?其他函数就有用了?、?


c语言,使用realloc为什么函数改变了原来内存中的数据……
int* more_numbers = NULL;...\/\/ count 一次一次变化,重新分配 more_numbers = (int*) realloc (numbers, count * sizeof(int));if (more_numbers!=NULL) \/\/ 应检查分配成功了还是失败了 { numbers=more_numbers;} else { \/\/ 失败了 free (numbers);puts ("Error (re)allocatin...

c语言怎么实现数组的循环?
这里我们先建一个固定长度的数组,如下图,数组长度为1000 然后就需要用到循环了,并且设置一个按键“回车键”跳出循环。这样,不断循环就可以不断地将数字存进数组里。当我们按回车键的时候就会跳出循环,结束输入。而输入的数据就会保存在num数组之中,唯一的缺点就是数组长度是固定的。

请问C语言中的stdio,malloc,calloc,realloc是什么的简写?
stdio -- STanDard Input Output 标准输入输出 malloc -- Memory ALLOCation 内存分配 calloc -- C lib memory ALLOCation (C库) 内存分配 realloc -- RE-ALLOCation (重新,再)分配 取自右边的大写字母

c语言 retuner啥意思
return 故名思意“返回”、也就是一段程序运行后执行一个返回操作,可以返回0或者值

C语言代码,中 pppre_err->or 程序指向箭头“->”代表什么? 谢谢_百度知...
这个在c语言里面好像只有结构体指针那边会用到。也就是->的作法就是在引用结构体中的变量。pp->结构体成员 也就是引用 pp里面的结构体成员 ,等同于 pp.结构体成员。

C语言中如何动态增加内存空间
numbers!=NULL) { numbers=more_numbers;numbers[count-1]=input;} else { free (numbers);puts ("Error (re)allocating memory");exit (1);} } while (input!=0);printf ("Numbers entered: ");for (n=0;n<count;n++) printf ("%d ",numbers[n]);free (numbers);return 0;} ...

C语言中return a=b;是什么意思?判断么?
把完整代码发上来看看,a=b并不是判断,而是赋值,返回b的值

怎么对C语言中的文件进行内容添加,删除,查找的操作?
13.3 文件的打开与关闭 文件在进行读写操作之前要先打开,使用完毕要关闭。所谓打开文件,实际上是建立文件的各种有关信息,并使文件指针指向该文件,以便进行其它操作。关闭文件则断开指针与文件之间的联系,也就禁止再对该文件进行操作。 在C语言中,文件操作都是由库函数来完成的。在本章内将介绍主要的文件操作函数。

有关C语言的问题
只能在incre中使用,静态变量一般在定义时就要初始化,若没有初始化则自动赋值为0,在函数调用过程中,前一次调用过程中得到的静态变量的值会被保留下来,下一次调用时是在前一次静态变量结果上继续计算,第一个程序的执行过程如下;main()中是一个for循环,循环条件为i<=x,这里的x是全局变量值为3,...

c语言中,一个return能不能在一个函数的前提下返回两个值?
不能哦,return只能返回一个值呀

自治区直辖县级行政单位15743717156: C语言中return 0有什么用? -
车忽双黄: 在主调函数中,可以根据这个返回值,判断被调用程序的执行情况.如果被调用的函数正常结束,就会执行这个return 0;就能判定它不是异常结束(如内存溢出、除以0出错、打开指定的文件失败等等出错情况而导致程序不能继续运行而异常中止).

自治区直辖县级行政单位15743717156: C语言中return 0 的真正含义 -
车忽双黄: main 主函数的 return 值,并不是告诉编译器的,而是返回到运行这个程序的系统的. 命令解释器(例如dos的command,linux 的各种 Shell)接收这个值,可以用于不同程序之间的交互.例如批处理程序(又或者另外一个程序通过管道什么的)...

自治区直辖县级行政单位15743717156: C语言中的return 0是啥意思 -
车忽双黄: "return 0"出现可能有两种能,一是在主函数〔main()函数〕中出现,二是在自定义函数中出现,在主函数中出现是代表的是无系统返回值,即执行到这时直接跳出程序了.在自定义函数中出现时代表的是无函数返回值,只执行了代码,做了一些代码让做的事,但不返回数值给主调函数.

自治区直辖县级行政单位15743717156: C语言中的 return 0; 是什么意思? -
车忽双黄: 函数的返回值,可以根据需要返回不一定是0,一般函数的返回值是整数时,对返回值没有什么要求可以写return 0;

自治区直辖县级行政单位15743717156: C语言编程里最后的return 0 有什么含义? -
车忽双黄: return 通常用于函数中,作为一个函数返回值!----------- 情形1)main函数中的return main中的return值返回的是主函数的执行情况0:表示无错误退出1:表示异常退出 情形2)常规函数的return int func(int a, int b) { return a+b; } 该函数的返回值就用于计算a+b的值.比如:int c = func(a, b);------------------- 此外,返回值还可以是BOOL型、Char型或其他类型.

自治区直辖县级行政单位15743717156: 关于C语言return 0 -
车忽双黄: 1. getchar()是防止闪退的 因为getchar()是等待输入一个字符的作用 而return 0;是让一个函数的返回值为0 2. main函数是个特殊的函数其可以没有返回值 所以可以去掉return 0; 3.扩展main函数有以下几种形式(还有其他的) int main(){ } int main(){return 0; } void main(){ }

自治区直辖县级行政单位15743717156: C语言中return 0.表示程序返回0 -
车忽双黄: c语言中的return一般有两个作用: 一个是返回函数值.这一点如同数学函数y=1+x²一样,函数经过内部计算,把1+x²的值带回来.但对于不需要返回值的函数来讲,就不用return了,如: void print(int n) { printf(“n=%d”,n); } 当然,现在有...

自治区直辖县级行政单位15743717156: c语言中return 0是干什么的?例如: #include<stdio.h> void main( ) { printf("hello world"); -
车忽双黄: return 就是用来函数要返回的是什么值,例如:return 0 就是函数最返回一个0值,return 1 就是返回一个1值;至于返回什么值 要看自己写的函数功能来定的,像上面你写的代码,主函数main你已经声明为 void 为空类型,可以不要返回值

自治区直辖县级行政单位15743717156: c语言中return 0是不是必须的,有什么作用 -
车忽双黄: 不是必须有,主函数定义类型为int main()要加上return 0; 如果主函数定义成void main()则不需要return 0; 高级程序员一般都用带返回值return 0;

自治区直辖县级行政单位15743717156: 请问在C语言编程中 return 0 这条语句是什么意思,起什么作用? -
车忽双黄: 告诉操作系统,当前程序返回值是0 一般可以用来判断程序是否正常退出等等

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网