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呢?

猜你喜欢

转载自www.cnblogs.com/just-save/p/11723132.html