return (值)讨论……(消息类型:聊天记录:消息组:群/校友录)

类别:编程语言 点击:0 评论:0 推荐:

用户:404082727(走尽天涯路②)

==================================================
消息组:群/校友录(51)
==================================================
消息类型:聊天记录
==================================================

 

2004-12-05 12:36:53 /k雨(9)
int test(int i){
    i++;
}

int main(void){
    int i = 0;
    for(i = 0; i < 10; i++){
        test(i);
    }
}

有意义吗
 

2004-12-05 12:42:15 走尽天涯路②()
没意义

2004-12-05 12:42:20 走尽天涯路②(7)
还有错

2004-12-05 12:42:46 走尽天涯路②(7)
return 0;
主函数没返回值

2004-12-05 12:43:13 走尽天涯路②()
test 也没有 

2004-12-05 12:48:54 Bucha()
疏忽了。[:-|] 不过这个只是因为有人问优化后的代码什么样子而做的,没有任何意义。

2004-12-05 12:55:10 /kun流星雨(4)
呵呵 

2004-12-05 12:56:01 飘雨(16)
想讨论一下:主函数返回0有什么意义?

2004-12-05 12:56:46 走尽天涯路②(4)
系统可以知道 程序正常结束了

2004-12-05 12:57:01 飘雨(1)
返回1也不是一样正常结束程序?

2004-12-05 12:57:27 飘雨时)
也没看到什么区别啊

2004-12-05 12:58:16 飘)
恐怕没人说的清楚了吧?sad

2004-12-05 12:58:35 Bu
大多数情况下都无所谓。但系统可以从这个返回值里知道你的程序有没有出错。一般return 0表示没有。而非零的值表示某个错误代码。Unix里的习惯而已

2004-12-05 13:00:04 走尽天涯路②()
真有点说不很清楚了  刚学多不注意这个的 

2004-12-05 13:00:17 飘雨时
这样啊...
我觉得吧...如果程序中真的有错误没等执行到return 0恐怕就结束了

2004-12-05 13:02:12 Buch)
但并不排除在最后出现的可能性。再说一般在最后返回0,表示正常。不然别的程序怎么知道你是在最后返回还是在中间返回?

2004-12-05 13:02:52 Buch)
比如说DOS下面,返回值就存在errorlevel里面

2004-12-05 13:05:15 飘)
如果是执行到中间出现错误而导致意外结束...系统怎么知道这个错误呢?

2004-12-05 13:06:14 Buchi)
最简单的就是返回一个非零值。无数Unix下的小程序都这样干

2004-12-05 13:09:33 飘)
我还有点疑惑:
return 0
return 1
都是程序的最后一句,不管这个程序是正常结束还是非正常结束,所有的执行过程都执行过了,现在才告诉系统,又什么用?系统知道了又能怎么样?

2004-12-05 13:10:58 飘雨6)
Buchi Automata大哥?

2004-12-05 13:10:59 Buch
这个是由人来定的哈。如果一个程序认为1是错误,那它就可以相应地处理。

2004-12-05 13:11:19 laz
仅仅是表示程序执行成功。
系统需要知道这个

2004-12-05 13:12:12 Buch)
就算系统需不需要知道,也是有你来定的哈

2004-12-05 13:12:36 飘)
我不知道怎么设定这东东

2004-12-05 13:13:02 飘雨)
或许unix可以,windows下不行?

2004-12-05 13:13:45 Buc)
视需要而定了。Windows下也可以,只不过好像没多少人这么用罢了。

2004-12-05 13:14:15 飘)
强烈要求Buchi Automata大哥讲讲

2004-12-05 13:14:38 Buc3)
我不做windows下面的编程,所以不清楚。

2004-12-05 13:16:08 飘雨
失望ing...那么请讲讲unix下如何处理返回非0值的情况,知道原理也可以啦

2004-12-05 13:17:35 Buc)
至于Unix下面,我已经说了啊。举个例子。比如说你的程序是杀掉一个进程:killprocess。那你在shell下面调用的时候就可以说:
v = killprocess
if(v==1) echo successful else echo failed

2004-12-05 13:18:55 Buc
也就是说,什么数字代表什么,由程序员定。没什么好说的阿

2004-12-05 13:19:50 飘雨)
努力理解中...

2004-12-05 13:21:30 飘)
v = killprocess
if(v==1) echo successful else echo failed
file://调用一个程序,和在程序里调用一个函数没什么区别
file://不过这个shell好象是一个编程环境?

2004-12-05 13:21:50 Buc)
相当于dos窗口

2004-12-05 13:22:56 飘)
相当于dos窗口
----------------
在里面敲入编程指令,观察程序结果?

2004-12-05 13:23:01 /k
主函数要向系统的调用者返回整型值。系统不能忽略这个返回值,所以"void main()"在C++和C都是非法的

2004-12-05 13:23:43 Bu)
系统可以忽略这个值哈。不晓得哪本书上这么说的

2004-12-05 13:23:46 飘雨
主函数要向系统的调用者返回整型值。系统不能忽略这个返回值,所以"void main()"在C++和C都是非法的
---------------------------
void main ()
我记得是可以这样写的

2004-12-05 13:23:54 /ku)
标准吧,

2004-12-05 13:24:22 Buchi)
什么标准?

2004-12-05 13:24:34 /kun流
此外还要注意,不用于C89和ARM C++标准,在ISO C++和C99标准中不允许省略主函数的类型声明

2004-12-05 13:25:04 /kun流星
不允许省略主函数的类型声明

就要有返回值

2004-12-05 13:25:40 Buchi
嗯,C++里面是。但这个很系统能不能忽略返回值是无关的。语言是语言,系统是系统哈

2004-12-05 13:27:02 /kun流星
呵呵

2004-12-05 13:27:13 /kun流
不能理解,DING、、、、、、、、

2004-12-05 13:28:26 飘雨时
刚想起一个问题:
return 0;
return 1;
不管返回什么..表示正常退出还是非正常退出,我们都可以看到一个显式的退出语句,而真正会导致程序非正常退出的错误肯定是程序员所未能预料的,所以肯定不会先写一个return语句放在那里,给系统返回一个错误指

2004-12-05 13:28:56 Buchi Au
其实很好理解:C++标准定义了main函数必须返回一个int,但这个只是语法的规定。至于其他程序是不是得一定处理这个返回值,显然不一定哈

2004-12-05 13:30:11 飘雨时
那么这个时候系统如何捕获这个错误?

2004-12-05 13:30:20 Buchi Au
那不一定。我可以try{ ....}catch(exception e){return 1;}。这样做的多了。再说不要狭隘地理解系统出错哈。不是所有错误都导致程序异常退出的。

2004-12-05 13:31:40 Buchi Aut
如果程序异常退出,系统往往只能得到一个没有具体含义的错误信息。说明你程序编得不好 [:D]

2004-12-05 13:34:16 飘雨时分
哈哈,在错误在没有严重到直接退出程序的时候
可以用异常处理退出程序?
如果这个错误严重到直接退出就只能说我程序写的不好了
-------------------
是不是这个意思?sadsadsad

2004-12-05 13:35:17 Buchi Au
异常只是一个例子。那C里还没有语言级别的异常呢。反正程序应该尽量处理各种异常。

2004-12-05 13:36:55 飘雨时分/
受益非浅...

2004-12-05 13:37:43 飘雨时分
我就知道大哥是个硬手..所以一定要拉来的说ohh

2004-12-05 13:37:55 飘雨时
先去吃饭

2004-12-05 13:39:08 Buchi Autom
[:$] 过奖了

 

本文地址:http://com.8s8s.com/it/it24725.htm