ralf3171204
2016-04-11 22:08
这是为什么?不需要return 1也可以?
#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;好像一样啊,报错不再执行
只要你把数据写到stderr中,就是输出错误流了,和返回什么没有关系
在前面的课程中老师讲过了,在执行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整数 ,不仅有提示作用,还有使程序停止运行的作用。
return 1是为了返回错误码,便于知道程序出错了,是为了让程序员看的
Linux C语言编程基本原理与实践
204384 学习 · 469 问题
相似问题