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

来源:7-1 [Linux C语言] 标准输入流输出流以及错误流

ralf3171204

2016-04-11 22:08

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

写回答 关注

4回答

  • 宸影
    2018-12-02 23:24:45

    #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;好像一样啊,报错不再执行

  • z3phyr
    2016-10-26 05:54:05

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

  • 小雾3378873
    2016-06-27 15:34:22

    在前面的课程中老师讲过了,在执行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整数 ,不仅有提示作用,还有使程序停止运行的作用。

           

             

    慕勒2752...

    棒棒哒

    2016-09-18 16:26:28

    共 1 条回复 >

  • 旭日A
    2016-04-12 11:47:47

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

Linux C语言编程基本原理与实践

本视频教程介绍C语言基本工作原理以及适用与C的实际开发方式

204384 学习 · 469 问题

查看课程

相似问题