c语言return的用法函数返回值返回后干嘛_函数可以不返回值吗

c语言return的用法函数返回值返回后干嘛_函数可以不返回值吗@C语言return的用法详解,C语言函数返回值详解欢迎使用Markdown编辑器你好!这是你第一次使用Markdown编辑器所展示的欢迎页。如果你想学习如何使用Markdown编辑器,可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计,将会带来全新的写作体验;在创作中心设置你喜爱的代码高亮样式,Markdown

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

C语言return的用法详解,C语言函数返回值详解

函数的返回值是指函数被调用之后,执行函数体中的代码所得到的结果,这个结果通过 return 语句返回。
return 语句的一般形式为:

return 表达式;

Jetbrains全家桶1年46,售后保障稳定

或者:

return (表达式);

有没有( )都是正确的,为了简明,一般也不写( )。例如:

return max;
return a+b;
return (100+200);

对C语言返回值的说明:

  1. 没有返回值的函数为空类型,用void表示。例如:
void func(){ 
   
    printf("http://c.biancheng.net\n");
}

一旦函数的返回值类型被定义为 void,就不能再接收它的值了。例如,下面的语句是错误的:

int a = func();

为了使程序有良好的可读性并减少出错, 凡不要求返回值的函数都应定义为 void 类型。

  1. return 语句可以有多个,可以出现在函数体的任意位置,但是每次调用函数只能有一个 return 语句被执行,所以只有一个返回值(少数的编程语言支持多个返回值,例如Go语言)。例如:
//返回两个整数中较大的一个
int max(int a, int b){ 
   
    if(a > b){ 
   
        return a;
    }else{ 
   
        return b;
    }
}

如果a>b成立,就执行return areturn b不会执行;如果不成立,就执行return breturn a不会执行。

  1. 函数一旦遇到 return 语句就立即返回,后面的所有语句都不会被执行到了。从这个角度看,return 语句还有强制结束函数执行的作用。例如:
//返回两个整数中较大的一个
int max(int a, int b){ 
   
    return (a>b) ? a : b;
    printf("Function is performed\n");
}

第 4 行代码就是多余的,永远没有执行的机会。
下面我们定义了一个判断素数的函数,这个例子更加实用:

#include <stdio.h>

int prime(int n){ 
   
    int is_prime = 1, i;

    //n一旦小于0就不符合条件,就没必要执行后面的代码了,所以提前结束函数
    if(n < 0){ 
    return -1; }

    for(i=2; i<n; i++){ 
   
        if(n % i == 0){ 
   
            is_prime = 0;
            break;
        }
    }

    return is_prime;
}

int main(){ 
   
    int num, is_prime;
    scanf("%d", &num);

    is_prime = prime(num);
    if(is_prime < 0){ 
   
        printf("%d is a illegal number.\n", num);
    }else if(is_prime > 0){ 
   
        printf("%d is a prime number.\n", num);
    }else{ 
   
        printf("%d is not a prime number.\n", num);
    }

    return 0;
}

prime() 是一个用来求素数的函数。素数是自然数,它的值大于等于零,一旦传递给 prime() 的值小于零就没有意义了,就无法判断是否是素数了,所以一旦检测到参数 n 的值小于 0,就使用 return 语句提前结束函数。

return 语句是提前结束函数的唯一办法。return 后面可以跟一份数据,表示将这份数据返回到函数外面;return 后面也可以不跟任何数据,表示什么也不返回,仅仅用来结束函数。

更改上面的代码,使得 return 后面不跟任何数据:

#include <stdio.h>

void prime(int n){ 
   
    int is_prime = 1, i;

    if(n < 0){ 
   
        printf("%d is a illegal number.\n", n);
        return;  //return后面不带任何数据
    }

    for(i=2; i<n; i++){ 
   
        if(n % i == 0){ 
   
            is_prime = 0;
            break;
        }
    }

    if(is_prime > 0){ 
   
        printf("%d is a prime number.\n", n);
    }else{ 
   
        printf("%d is not a prime number.\n", n);
    }
}

int main(){ 
   
    int num;
    scanf("%d", &num);
    prime(num);

    return 0;
}

prime() 的返回值是 void,return 后面不能带任何数据,直接写分号即可。

笔记来源http://c.biancheng.net/view/1855.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/203971.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 怎样创建FTP服务器

    怎样创建FTP服务器1W次浏览2016.07.21更新用IIS建立FTP服务器不是非常复杂,操作起来比较简单,类似于用IIS建立网站,其中涉及的虚拟目录等概念和网站中的虚拟目录一致。用IIS建立FTP服务器不是非常

  • java向上取整向下取整

    java向上取整向下取整向上取整用Math.ceil(doublea)向下取整用Math.floor(doublea)举例:publicstaticvoidmain(String[]args)throwsException{doublea=35;doubleb=20;doublec=a/b;System.ou

  • SAE J1939物理层

    SAE J1939物理层在SAEJ1939-11和ISO11898中对商用车使用的线束都是屏蔽双绞线,即为除了电源、地、CAN_H、CAN_L之外还有一个屏蔽线,并且所有ECU的屏蔽线都接到同一个地线上,一般接地点选择在网络的中央位置上。但是在实际使用中,多数整车厂使用的都是非屏蔽双绞线,比较而言,非屏蔽双绞线的EMC特性要差一些,在1939中正常使用屏蔽双绞线一路CAN网络上最多可以接入30个ECU,而对于非屏蔽双

  • golang 永久激活破解方法

    golang 永久激活破解方法,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • arm的一些概念(ARM9、Cortex的区别)

    arm的一些概念(ARM9、Cortex的区别)arm的一些概念(ARM7、Cortex-M的区别)ARM7:ARMv4架构,ARM9:ARMv5架构,ARM11:ARMv6架构,ARM-Cortex系列:ARMv7架构。  ARM7没有MMU(内存管理单元),只能叫做MCU(微控制器),不能运行诸如Linux、WinCE等这些现代的多用户多进程操作系统,因为运行这些系统需要MMU,才能给每个用户进程分配进程自己独立的地址空间。uc…

  • Deep Reinforcement learning – 2. 基于tensorflow的DDPG实现

    Deep Reinforcement learning – 2. 基于tensorflow的DDPG实现TODDeepReinforcemenlearning-2.基于tensorflow的DDPG实现基于我上一篇博客的算法介绍,使用tensorflow的代码实现,仿真环境使用gymtorcs为了快速训练出结果,我没有使用driverview图像作为输入,而是使用lowdimension传感器数据作为输入,总共29个数据,包括:-赛车速度:speedX,

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号