标准c语言程序的语句都以什么结尾,c程序的执行是从什么开始到什么结束?
C程序的入口是main函数,一般来说只要是正常运行结束的都是从main函数的第一句话开始,最后一句结束。
例如:int main()//程序开始
{
printf("Hello!
");
return 0;//程序结束,返回值
}
但如果程序执行到中间遇到 return(main函数里的) exit(不管是main函数还是子函数中) 等也是会结束程序的。
C语言main函数的写法
main函数是C程序的入口函数,即程序的执行是从main函数开始,对其他函数的调动也是直接或间接地在main函数中被调用。那么main函数又是被谁调用呢?答案是操作系统。C语言发展至今,对main函数有多种不同的写法,下面就来探究一下各种不同的写法。注:测试环境为Ubuntu 17.10,GCC版本为7.2.0。
NO.1main(){}
例:#include
main(){
printf("Hello World
");
}
NO.2void main(){}
例:#include
void main(){
printf("Hello World
");
}
NO.3int main(){}
例:#include
int main(){
printf("Hello World
");
return 0;
}
NO.4int main(void){}
例:#include
int main(void){
printf("Hello World
");
return 0;
}
NO.5int main(int argc,char *argv[]){}
例:#include
int main(int argc,char *argv[]){
printf("Hello World
");
return 0;
}
NO.6int main(int argc,char **argv){}
例:#include
int main(int argc,char **argv){
printf("Hello World
");
return 0;
}
从上面的测试来看,写法1在C90标准下可以正常编译,而在C99和C11标准下会抛出一个警告(不写返回值,默认的返回值为int,也就相当于写法1和写法3等价)。写法2-6在C90、C99、C11标准下均能正常编译。在这么多写法中,到底哪一些才是main函数的标准写法?于是查阅了C标准文档对main函数的规范写法,见下图:
从标准文档中可以看出,写法4、5、6才是main函数的规范写法。写法5与写法6是等价的。那为什么又会有写法1、2、3呢?那是因为从1972年C语言被设计出来到C90标准发布这段时间,对C语言不同的实现就导致了对main函数的差异性。强烈不推荐写法2,因为main函数是被操作系统调用的,操作系统会根据main函数的返回值来判断程序的正确执行与否,如果返回void,那代表的是什么状态呢?而且一些编译器支持这种写法,一些编译器不支持,所有的标准并未认可这种写法。对于写法1和写法3还勉强能够接受,不过也不建议这样写,最好还是按照标准写法来写。为什么要按照标准写法来写?那是因为为了让C程序具有更好的移植性。写法5与写法6是等价的,第一个参数代表main函数参数的个数,第二个参数用指针分别指向这些参数。argv[0]代表程序名,argv[1]到argv[argc-1]代表程序参数。下面再看看main函数的返回值问题,见下图
从图中可以看出,如果main函数的返回值是int类型的兼容类型,从main函数返回后的值与exit一起相当于执行了exit xxx。xxx代表从main函数返回后的值。如果忘记写了return语句,当执行到main函数体的右大括号},会返回默认值0。返回0代表程序执行成功,程序退出。如果main函数的返回类型不是int类型的兼容类型,程序返回给操作系统的状态将会不明确。
C标准文档下载地址:
传送门:http://download.csdn.net/download/u012219371/10184521
C标准简介:
传送门:http://blog.csdn.net/u012219371/article/details/78951972
相关推荐:c语言教程视频
标准c语言程序的语句都以什么结尾,c程序的执行是从什么开始到什么结束?相关推荐
- 程序员永远都不会出轨? 和程序员谈恋爱的真实感受
编辑 | Alice 专栏 | 九章算法 不管你是刚刚开始与程序员恋爱还是已经与程序员交往了很久,这篇文章都值得你看一看,我百分之百确信你会阅读得很愉快. Enjoy~ 01 程序员永远都不会出轨 因 ...
- 普通的程序员每天都做什么,资深程序员带你了解行业内幕
和名企那种高级程序员当然不一样,人家的工作可能是研究架构,专研用于提高性能的算法,实现人工智能论文里的功能,自然语言的理解,图像识别,高并发问题解决等等,这些高大上的功能. 呵呵,开玩笑了.其实名企里 ...
- Go语言基础-if语句
原文链接: https://www.fearlazy.com/index.php/post/288.html 在目前接触的几种语言中条件语句都是必不可少的.很难想象没有条件语句要怎么写程序. 1.if ...
- 【C语言】分支语句与循环语句
前言 本篇写的内容是C语言中的分支和循环语句. 分支语句ifelse语句.switch语句 循环语句while循环.for循环.do while循环 语句 C语言中由一个分号:隔开的就是一条语句.比如 ...
- 程序员转行都去干嘛了?产品经理很正常,这位卖烧饼的也太强了
程序员转行都去干嘛了?以下这些切实又不切实的选择仅供参考 1.转往临近岗位,比如你讨厌的产品经理 程序猿和产品经理可谓是最像夫妻的两个职位,相爱相杀,知根知底. 程序员转产品经理有很大优势,因为了解产 ...
- 微信小程序好物圈全新改版,小程序电商创业者新机遇
我们都知道,微信最近的一系列改版更新都是为了小程序这个新物种,当移动互联网人口红利逐渐减少甚至消失的时候,唯有从现有的功能条件下,开发出新的功能来拉动软件的活跃度,产品的更新迭代也是频繁发生,毕竟相对 ...
- c语言注释语句执行吗,C语言学习笔记之C语言概念解析(附资料分享)每一个语句都必须以分号结尾但预处理命令函数头和花括号“}”之后不能加分号...
[[怪兽爱C语言]C语言学习笔记之C语言概念解析(附资料分享)]https://toutiao.com/group/6582429294901854728/?iid=15906422033&a ...
- c语言程序表达语句,《C语言程序设计》讲稿.doc
<C语言程序设计>讲稿 <C语言程序设计>讲稿 目 录 第一讲 C语言概述1 第二讲 C语言程序介绍2 第三讲 算法8 第四讲 数据类型(1)20 第五讲 数据类型(2)21 ...
- c语言分隔符的作用,句子分割代码(C语言程序的语句分隔符是)
C#代码中sql 语句段分割 sql server 查询分析器能分析到底当前语句是否结束 可能中间有多个回车. 涉及程序设计 语义的解释.这个很麻烦, 我记得 看过一篇解析语法的程序设计,很麻烦.还是 ...
最新文章
- vc 只有顶级窗口可以弹出窗口_如何在Mac上允许弹出窗口
- 计算机内存与内置类型,笔记本内存种类有哪些 笔记本常见内存类型介绍
- CentOS7 搭建Pulsar 消息队列环境,CentOS(Linux)部署Pulsar,亲测成功,以及Python操作Pulsar实例驱动
- Clumsy网络模拟工具
- 云计算实战系列一(走进linux)
- oracle 获取执行时间间隔,Oracle获取某一段时间间隔之后的日期
- 获取 python import模块的路径
- MySQL-快速入门(4)MySQL函数
- ORACLE RAC 12C(12.1.0.2)数据库软件安装步骤
- .NET报表控件ActiveReports实战应用——入门指南
- CAXA图文档2007服务器端,CAXA图文档客户端系统管理员操作.doc
- Matplotlab可视化学习笔记(二):如何绘制柱状图
- 熊出没之伐木机器人_盘点熊出没中李老板的五大伐木工,光头强无人能代替
- iOS 开发中的日期格式
- 移动硬盘使用mysql_移动硬盘如何正确使用才好?
- 数据可视化之智能bi实现生态绿地数据可视化分析
- 在家里免费下载知网内的论文方法
- 电脑卡在系统logo处
- kingcms php 下载,KingCMS企业版(PHP) v6.1.1641(Sp2)
- 解析 Java 类和对象的初始化过程