return和printf的区别
printf,即打印函数,即将传⼊的传输打印到屏幕上来,重点在于打印到屏幕上,⽽不是"输出"这个概念,输出可能是在函数这个⿊盒⼦⾥进⾏了数据运算,但是屏幕前的你我是看不见,其格式为
'printf("我是⼀个字符串");'
⽽return 则是返回值,什么是函数的返回值?⼀般是将这个函数对数据处理后的结果返回出来,如果没有返回值,
会发⽣什么呢?
#include<stdio.h>
int main(void)
{
int a;
a = max(1,2);
printf(a);
return 0;
}
int max(int x,int y)
{
int max;
if (x > y)
max = x;
else
max = y;
}
我们会发现打印出的a仍然是max值,这是因为如果没有指定返回值,max函数会⾃动返回⼀个值,这次我们给它任意
加上⼀个返回值
#include<stdio.h>
int main(void)
{
int a;
a = max(1,2);
printf(a);
return 0;
}
int max(int x,int y)
{
int max;
if (x > y)
max = x;
else
max = y;
return 100;
}
我们会发现打印出来是100,为什么呢?这是因为 a = max(1,2);这个语句实际上包含了两个步骤:
1. 为max()函数传⼊参数1和,2,在max参数中进⾏⼀系列的处理,按照我们对max函数的理解,我们应该得到⼀个较⼤的值的,但是现在却得到了100,
这是因为这个函数返回的值是⽤return语句执⾏的,⽽我们返回了100这个数,⾃然就得到了100这个结果了.如果我们要返回正确的值,我们应该返回max,即return max才⾏.通常返回值的类型在定义函数的时候需要在函数头说明.⼊这⾥的int max前⾯的int就是返回值类型.
2. 得到这个返回值之后,然后将这个返回值赋值给a.如果我们没有使⽤返回值,⽽编译器⼜没有默认返回⼀个值,那么我们就是将⼀个函数直接赋值给
变量a,⽽不是⼀个值,通常这都会报错.这个返回值⼀般是⽤函数头加实参组成.如此处的max(1,2)就是⼀个返回值.这个返回值实际就是⼀个数,因此我们可以把它作为数值计算,如max(1,2) * 1,或者作为另⼀个函数的传⼊参数,如sqrt(max(1,2)),通常我们会遇到⼀个报错,说把函数作为⼀个参数传⼊,那么很可能就是因为我们没有为这个函数传⼊参数,⽽⼜没有使⽤函数指针,不能将函数作为参数传⼊
从上⾯我们可以再想⼀下,既然函数⼀般都有返回值,那么printf()这个函数⼜有没有参数呢
#include<stdio.h>
int main(void)
{
int a;
a = printf("Hello World!");
printf("%d",a);
return 0;
}
实际上我跑⼀下就会发现我们a是有值的,如果我们多试⼏次,就会发现返回值其实是字符串的长度,实际上,如果printf跑出问题了,返回值会是⼀个负数.这在实际的应⽤中是有⼀些应⽤价值的.字符串函数传参
现在想⼀下,为什么c的标准写法需要有⼀个返回值,⼜⼀般返回0呢
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论