没有表达式的return语句:

void func(void) {

return;

}

在void函数中是完全合法的.带表达式的return语句的合法性取决于您正在使用的C语言的版本.

1990 C标准说:

A return statement with an expression shall not appear in a

function whose return type is void.

该标准的1999年和2011年版本都说:

A return statement with an expression shall not appear

in a function whose return type is void. A return

statement without an expression shall only appear in a function

whose return type is void.

这是一个约束,这意味着编译器必须为任何违反它的程序发出诊断(可能是非致命警告).

由于历史原因,C90允许返回语句在非void函数中没有表达式.前ANSI C没有void关键字,因此无法定义未返回值的函数.程序员会省略返回类型(默认为int)并简单地忽略它. C90规则允许这样的旧代码编译而不会出错.您仍然无法从非void函数返回值;如果调用者尝试使用(不存在)结果,则程序的行为是未定义的. 1999年的标准稍微收紧了规则.

你的程序的另一个问题是你在声明可见之前调用fun.根据C99及更高版本的规则,这是非法的(尽管编译器可能只是警告它).根据C90规则,这是合法的,但编译器将假定该函数返回int.您的程序的行为是未定义的,但您的void函数乐趣可能恰好表现为返回一个值,并且对它的调用可能恰好表现为使用该值.

C编译器对于某些错误往往相当宽松,因此旧代码(有时在第一个实际标准发布之前编写)不会被拒绝.但是你的编译器应该至少警告你关于return语句,可能还有关于无效调用的警告.你应该密切关注编译器警告;他们的待遇几乎与致命错误一样.您应该使用选项来增加编译器警告您的数量.如果您正在使用gcc,请使用-std = c90,-std = c99或-std = c11以及-pedantic来强制执行标准一致性.您可以添加-Wall-Wextra`以启用更多警告.

c语言如何调用void函数返回值,C void函数,返回值相关推荐

  1. c语言调用c 的库,C语言程序调用C库函数方法

    C语言程序调用C 库函数方法,关键是函数名字解析问题. 其实实现起来不是很难. 使用关键字 extern \"C\" 可以使得C 编译器生成的函数名满足C语言的要求 例子如下: 链 ...

  2. C语言试题三十七之求除一个2×m整型二维数组中最大元素的值,并将此值返回调用函数。

    1. 题目 请编写一个函数function,它的功能是:求除一个2×m整型二维数组中最大元素的值,并将此值返回调用函数. 2 .温馨提示 C语言试题汇总里可用于计算机二级C语言笔试.机试.研究生复试中 ...

  3. c++语言中如果调用函数时,需要改变实参或者返回多个值,应该采取,C++综合练习题2...

    C++程序设计综合练习题(二) 一.单项选择题 1. 静态成员函数没有() A. 返回值 B. this指针 C. 指针参数 D. 返回类型 2. 假定AB为一个类,则执行"AB a(2), ...

  4. java调用c 返回值_推荐--Linux平台下Java调用C函数(补充关于String类型函数返回值)...

    平台介绍 系统:ubuntu10.04 jdk:Java(TM) SE Runtime Environment (build 1.6.0_20-b02) gcc:gcc version 4.4.3 ( ...

  5. c语言函数返回值类型必须,C++中函数类型与定义的函数返回值类型必须相同么?...

    C++中函数类型与定义的函数返回值类型必须相同么?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! C++中函数类型与定义 ...

  6. void函数返回值_(*void(*)()0)() 是什么

    (*void(*)()0)() 代码分析 这是啥 这行代码,是我今天在看<C陷阱与缺陷>时看到的,一开始很不能理解.慢慢上网摸索一些后,大致理解了,现在来分享一下我所理解的这行代码. 1. ...

  7. 【C 语言】一级指针 易犯错误 模型 ( 判定指针合法性 | 数组越界 | 不断修改指针变量值 | 函数中将栈内存数组返回 | 函数间接赋值形参操作 | 指针取值与自增操作 )

    文章目录 一.判定指针合法性 二.数组越界 三.不断修改指针变量值 四.函数中将栈内存数组返回 五.函数间接赋值形参操作 六.指针取值与自增操作 一.判定指针合法性 判定指针合法性时 , 必须进行如下 ...

  8. c语言void返回什么意思,C语言程序返回值是void什么意思?

    满意答案 ansjc 2014.11.02 采纳率:44%    等级:6 已帮助:206人 void的使用 下面给出void关键字的使用规则: 规则一 如果函数没有返回值,那么应声明为void类型 ...

  9. C语言基础入门48篇_20_函数入门:为什么使用函数?(函数使得程序模块化 使用函数封装细节,使得程序员只要面向函数的接口编程(参数与返回值),而不用关心函数内部细节)

    菜鸟和高手都会基本,那菜鸟为什么是菜鸟,高手为什么是高手呢?很大的区别在于,高手写的程序[结构性]更好,更容易维护.而函数就是C语言结构化的一种手段. 函数可以将大的计算任务划分为多个较小的任务(解耦 ...

最新文章

  1. AI领域我重点关注的几个今日头条号
  2. boost::math::daubechies_wavelet用法的测试程序
  3. linux传统用户界面是,linux用户界面与Shell命令习题.doc
  4. Controller层使用@value注解获取不到properties属性值
  5. OMM机房监控系统引领机房监控新趋势
  6. Redis实战(十二)Redis实现分布式锁
  7. java小程序(万年历)
  8. 利用74HC138译码器实现数码管显示
  9. Httpclient4 简介
  10. 77.(leaflet之家)leaflet图层显示与隐藏
  11. HAOI2017 简要题解
  12. 重庆2021年高考二诊成绩查询,2021年重庆二诊,2021年4月重庆二诊考试,重庆二诊康德卷...
  13. C#操作.exe文件
  14. 我的第一个安卓应用程序_我如何设计我的第一个应用程序
  15. android 屏幕的放大缩小实现
  16. Java学习-ATM系统
  17. Scikit-Learn 中文文档】数据集加载工具 - 用户指南 | ApacheCN
  18. C语言初阶-C语言中static的用法
  19. Lmbench测试集 --- 延迟测试工具lat_mem_rd
  20. java 日期处理_java日期处理总结

热门文章

  1. 前端安全——防止流量劫持
  2. EDA电子设计自动化01--简介
  3. 腾讯qq6.3官方版 v12390 体验版
  4. 疫情加剧线上需求暴涨,解读东南亚Lazadashopee运动户外需求品类
  5. Linux设备驱动程序第三版源码
  6. 全排列+n皇后问题(C++深度优先搜索与广度优先搜索)
  7. OVS框架以及源码笔记1
  8. substance painter anchor point快速教程
  9. jcrop java_tapmodo-Jcrop - WEB源码|JSP源码/Java|源代码 - 源码中国
  10. 单个App的UI测试