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

相关文章
相关标签/搜索