C语言关于return 的疑问
1.intmain()主函数最后没写return0,无报错,是不是写不写一个样?2,副函数intf()最后没写返回什么,就报错。函数最后没写什么,它是不是自动返回一个vo...
1. int main () 主函数 最后没写return 0,无报错,是不是写不写一个样?
2,副函数 int f() 最后没写返回什么,就报错。函数最后没写什么,它是不是自动返回一个void类型值然后跟int 冲突所以报错呢?
3,为何主函数没报错,副函数却报错呢
4,副函数最后也能使用return 0; 他的意义跟主函数return 0 相同吗? 展开
2,副函数 int f() 最后没写返回什么,就报错。函数最后没写什么,它是不是自动返回一个void类型值然后跟int 冲突所以报错呢?
3,为何主函数没报错,副函数却报错呢
4,副函数最后也能使用return 0; 他的意义跟主函数return 0 相同吗? 展开
5个回答
展开全部
其实你提出的问题,跟编译器是有关的,有的编译器是不检测这些问题,有的当成警告,有的当成错误。我跟你说一下GNU的标准吧。
1.首先你要知道的一件事就是,C语言写出来的程序,一般被认作是要在命令行中执行的,也就是说,你写的程序可能成为一条类似于指令似的东西,所以,你的程序可能成为别的程序的参与或者入口值,那么,这就要求,你的程序必须返回一个东西,以表征你的程序运行有结果。想windows平台下的东西,基本都是窗口的么,鼠标点个叉,程序就没了,它可能不在意返回什么,但是你在命令行下,它有这方面的需求,要求你的程序必须返回一个值,所以C标准拓展规定主函数,必须有返回值。你这里说无报错,只是你用的可能是win平台下的编译器,它不检查这个而已。
2.副函数 int f() 最后没写返回什么,就报错。这个问题实在显而易见,你都说是int f(),前面的int是啥意思,也就是,你答应人家返回一个int,你却不给,这不是你说话不算话么,编译器当然不让你过了。你写void,可以不写return,但是你写int一定要返回一个int。(其实有很多编译器也不会检查这个,一般只是报个警告而已)
3.第三个问题,参考我上面两个解答,应该能明白点了吧。
4.不论在什么函数中,return 0 ;的意义就是返回一个0值。但是这个0值可能代表很多意义。对于通常的程序来说,主函数返回0,证明这个程序被正确执行,并结束。普通函数里的返回值,完全取决于你自己定义的意义。就是个0值而已。
1.首先你要知道的一件事就是,C语言写出来的程序,一般被认作是要在命令行中执行的,也就是说,你写的程序可能成为一条类似于指令似的东西,所以,你的程序可能成为别的程序的参与或者入口值,那么,这就要求,你的程序必须返回一个东西,以表征你的程序运行有结果。想windows平台下的东西,基本都是窗口的么,鼠标点个叉,程序就没了,它可能不在意返回什么,但是你在命令行下,它有这方面的需求,要求你的程序必须返回一个值,所以C标准拓展规定主函数,必须有返回值。你这里说无报错,只是你用的可能是win平台下的编译器,它不检查这个而已。
2.副函数 int f() 最后没写返回什么,就报错。这个问题实在显而易见,你都说是int f(),前面的int是啥意思,也就是,你答应人家返回一个int,你却不给,这不是你说话不算话么,编译器当然不让你过了。你写void,可以不写return,但是你写int一定要返回一个int。(其实有很多编译器也不会检查这个,一般只是报个警告而已)
3.第三个问题,参考我上面两个解答,应该能明白点了吧。
4.不论在什么函数中,return 0 ;的意义就是返回一个0值。但是这个0值可能代表很多意义。对于通常的程序来说,主函数返回0,证明这个程序被正确执行,并结束。普通函数里的返回值,完全取决于你自己定义的意义。就是个0值而已。
追问
return 0表示结束函数并返回函数0.
对于主函数来说,return 0跟return 1,return 100本质上是一样的,是这样吗?只不过我们把return 0自己定义为正常结束?这个0就好像是注释?
追答
其实,如果你只关注这一个程序,主函数return多少,都是没有任何差别的,但是,你考虑我说的情况,如果你的程序,是别人程序的入口,那么别人可能关注你的结果,比如,别人用了你的程序,不知道你的程序运行是不是正确的,他期待你的返回值,来告诉他你程序的运行情况,这时候,主函数的返回值变得尤为重要。比如说,你写一个程序完成除法操作。正常来说,返回a除b,但是你有没有想,一旦b=0怎么办,这个时候,你可能需要返回一个特殊的符号,来告诉用户,你的程序是非正常结束的。
展开全部
你说的副函数,麻烦你说成子函数吧。
一个函数就算有返回值类型,不写return 什么子函数是不会出错的。当日,如果没有返回值的,你强制给它一个return 0那就会出错。
一个子函数的return 0是指一个函数运行后,这个函数所要返回的值。其实return 在哪里使用结果都是一样的,也就是结束这个函数。
一个函数就算有返回值类型,不写return 什么子函数是不会出错的。当日,如果没有返回值的,你强制给它一个return 0那就会出错。
一个子函数的return 0是指一个函数运行后,这个函数所要返回的值。其实return 在哪里使用结果都是一样的,也就是结束这个函数。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1,2,3个问题:这是编译器问题,有些编译器在main里可以不用返回。建议按标准来。int类型的,应该返回一个整形数。
4:意义有点不同,主函数里的return 0主要是结束主函数(这里这个0可以随便改成1,2,3.。。。,主要是用来结束主函数,习惯写为0),整个程序段。而子函数里的return 0也有类似的功能,但因为子函数可能用来传参 如 int f() ,后面有m=f();这就意义不一样了。
4:意义有点不同,主函数里的return 0主要是结束主函数(这里这个0可以随便改成1,2,3.。。。,主要是用来结束主函数,习惯写为0),整个程序段。而子函数里的return 0也有类似的功能,但因为子函数可能用来传参 如 int f() ,后面有m=f();这就意义不一样了。
追问
那意思就是,子函数的return 0包含两种含义。一是结束此函数,二是返回0这个值?
因为主函数不被调用,所以返回0用不起来,所以只有结束此函数这个功能。是这样吗?
追答
是的,是这个意思。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果main函数显式返回(指return语句),编译器会自动给你添加一个,但其他函数不会,如果返回值不是void,必须显式返回.
你的C++教材上应该有跟上面差不多的描述,自己认真点看看吧.
你的C++教材上应该有跟上面差不多的描述,自己认真点看看吧.
来自:求助得到的回答
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
return 0; 这是一个返回值,必须要写的 。那可能是你的编译器有问题了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询