1.return的用法
函数的返回值是指函数被调用之后,执行函数体中的代码所得到的结果,这个结果通过 return 语句返回。(这句话摘录C语言中文网)
1.1 return的一般表现形式:
return (表达式);
或者
return 表达式;
1.2 return在函数中的应用:
1.2.1 在无返回值类型函数中的应用:(即void类型)
void fun ()
{
printf ("hello world");
}
int main()
{
fun();
return 0;
)
在这段代码中,一旦建立了void类型函数,就不能再接受其返回值了,它也没有其返回值让你接收,比如下面这句就是错误的;
int a = fun();
这里就是非法使用void 类型函数。
1.2.2 在需要返回值类型函数中的应用:
这里我们用一段简单的比较大小函数来看看return的一些应用。
int Max(int a, int b)
{
if (a > b)
{
return a;//当a>b时候返回a
}
else
{
return b;//当b>a或者相等时候返回b
}
}
int main()
{
int a = 3;//初始化a赋值为3
int b = 4;//初始化b赋值为4
int max = Max(a, b);//建立一个函数来比较a,b的大小
printf("%d", max);
return 0;
}
这里我们看到在一个函数体中,return 语句可以多个存在,但是当我们执行到第一个return语句时程序就不会继续向后面执行。
由此我们可以得到,return语句具有强制结束函数执行的作用;这里需要知道是,return语句是提前结束函数的运行的唯一办法!
1.当return语句后面跟数据的时候,这时会将这个数据返回到函数体外面
2.当return语句后面什么都没有的时候,这时具有强制结束函数的的作用(若是你并不要需要函数返回值时,并不建议使用return语句,为了使程序有良好的可读性并减少出错, 凡不要求返回值的函数都应定义为 void 类型。)
2.printf的返回值
C语言printf函数的返回值是printf实际控制输出的字符数
这里我们说一下会被很多我们初学者忽略的一个东西 printf的返回值,我们都清楚printf的用法但很多都不知道原来printf也有返回值。这里我们用一段代码来看;
int main()
{
int a = 3;//初始化a赋值为3
printf("%d",printf("%d\n",a));
return 0;
}
这里我们得到的答案是:
3
2
下面我们来分析一下为什么是这个答案:
1. 这段代码中我们先执行的是括号里面的printf语句,因为我们先把3赋值给a,所以打印出来3;因为有/n转行符所以到下一行;
2.这里2的由来就是第一个printf语句的返回值,返回值就是括号里面的printf语句里面的字符个数,比如:这里'3' '/n' 这里有二个字符,所以返回值就是2;
由此我们可以得到,printf的返回值就是输出的字符数量!
3.scanf 的返回值
scanf 函数的返回值反映的是按照指定的格式符正确读入的数据的个数。 如果输入数据与指定格式不符,则会产生输入错误。 遇到输入错误,scanf函数会立即终止,返回已经成功读取的数据的个数。
同上,scanf的返回值也是被大家所忽略的,闲话少说,我们直接上代码;
int main()
{
int a = 0;
int b = scanf("%d", &a);
printf("%d",b);
return 0;
}
这里我们用整形变量b来接收scanf的返回值,当我们进行以下不同的输入情况进行判断:
3
1
1.当我们输入3的时候,printf打印出的结果是1
e
0
2.当我们输入字符e的时候,printf打印出的结果是0
进行到这里的时候,我们改变b的变量类型:
int main()
{
char a = 0;
int b = scanf("%c", &a);
printf("%d",b);
return 0;
}
当我们将a的类型改成char类型的时候我们在输入之前的二个数据
3
1
这里再输入3时得到的答案是1
e
1
这里输入e的值得到的也是1
这里我们就会出现疑问了,为什么在int类型中我们输入e时,会打印出0呢?
下面我们再做一个实验就知道了;
int main()
{
int a = 0;
int c = 0;
int b = scanf("%d %d", &a, &c);
printf("%d", b);
return 0;
}
这次我们利用二个变量,a变量和c变量,再用c变量来接收scanf的返回值;
32 e
1
这次我们输入32和e时,得到的打印结果为1;原来当我们输入32时候scanf可以接收整形输入与之匹配但是当我们输入e这个字符变量时,scanf是接收不了的与指定格式不符则显示错误,就会终止,最后返回与之匹配的输入个数。