为了账号安全,请及时绑定邮箱和手机立即绑定

打印错误输出流的时候,我测试在后面不加return 1也可以有效

这是为什么?不需要return 1也可以?

正在回答

4 回答

#include<stdio.h>
/*stdin * stdout * stderr*/
int main(){    
 fprintf(stdout,"please input the value a:\n");   
 int a;  
  fscanf(stdin,"%d",&a); 
   if(a<0)
   {   
   fprintf(stderr,"the value must > 0\n");  
   // return 1;
   }
   printf("你输入的是%d\n",a);   
   return 0;}

1去掉return 1;提示报错,继续执行。

2加上return 0;我发现和return 1;好像一样啊,报错不再执行

0 回复 有任何疑惑可以回复我~

只要你把数据写到stderr中,就是输出错误流了,和返回什么没有关系

0 回复 有任何疑惑可以回复我~

在前面的课程中老师讲过了,在执行C语言程序时,如果前一个步骤执行错误,就不会往下执行,如何判断前一个程序是否出错,是看执行它以后返回值是否为0,如果为0,继续执行,如果不为0,则程序就不继续执行了。

所以,在编程时,我们要想到,当程序没有得到我们想要的东西时,我们需要不继续执行程序,所以应返回一个非0的错误码,

如果,像你提问的那样,不加return 1,则即使程序判断出错误了,也没有相应措施,它的判断是没意义的,

例如:本节讲的这段语句中if外面再加一条语句,printf("你输入的是%d\n",a);

          如果if判断我们输入的是<0,但会因为没有return 1;而继续执行,输出结果中除了if语句内的输出,还有if外的输出;

          如果我们在if判断语句中加了return 0;注意,是return 0;      虽然当if判断出输入的是<0,也跳出程序了,也提示了,但是程序执行这段语句后的返回值是0,如果这段程序后面还有程序,因为前一个程序的返回值为0,所以它会继续执行的。所以,if虽然判断了,提示了,但没有停止程序执行。

        所以,我认为,return 一个非0整数 ,不仅有提示作用,还有使程序停止运行的作用。

       

         

4 回复 有任何疑惑可以回复我~
#1

慕勒2752433

棒棒哒
2016-09-18 回复 有任何疑惑可以回复我~

return 1是为了返回错误码,便于知道程序出错了,是为了让程序员看的

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

打印错误输出流的时候,我测试在后面不加return 1也可以有效

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号