第一句子大全,网罗天下好句子,好文章尽在本站!

C语言可以在执行语句中间定义变量吗?

时间:2023-06-19

那在C语言里面有什么要求?一般老师会讲:在C语言里,变量只能在函数的开头处声明和定义

友情提示:本文共有 1130 个字,阅读大概需要 3 分钟。

想了解更多精彩内容,快来关注lemoontree

在C++中(.CPP文件是按C++标准编译的),按照语法我们可以把变量定义在任何位置,只要在用到变量前对该变量进行声明定义就行了,位置不做特别要求,比如函数中任意位置出现的For循环中:

好多同学分不太清C和C++的区别,加上使用VC++等时源代码文件默认也是.cpp的,很多同学平时懒得改成.c后缀名,觉得运行时候也都一样没啥区别,所以很容易弄混。

那在C语言里面有什么要求?

一般老师会讲:

在C语言里,变量只能在函数的开头处声明和定义。

在函数里要用到的变量必须要在开头处声明定义。

声明定义的前面不能有任何其他非声明定义的语句。

全局变量在函数体的外部声明定义。

C语言老的标准的规定了在一个模块里(函数、循环体等)先声明一切所需变量后才能进行相关操作的规定。

全局变量,可以在函数外任何位置定义。

局部变量的合法定义位置,依赖于编译器遵循的C规范版本。

接下来,我们参照具体例子详细看一下:

1、仅支持C89规范的编译器,只支持在作用域起始部分定义变量。比如:

如果写成

2、支持C99或者部分支持C99的编译器:

局部变量可以定义在任何位置。

之前的第二个例子中的定义方式,在这种编译器下是合法的。

甚至部分支持C99全面的编译器,支持在for中定义变量。

3、目前大多数编译器,均支持任何位置定义变量,但仅有少部分支持for中定义变量,所以在编码时,不建议for中定义,会降低可移植性。

简单的说如果大家使用较老的编译器比如VC++6.0时遇到下面的代码会提示错误,因为较老的编译器要求.c文件中的局部变量定义必须放在所有执行语句前,块开头处。

上面的程序如果在较老的编译器下使用.c文件保存并编译的时候会出错,注意,i、j的定义是没有任何问题的,因为它们都处于局部块的开始处。但是k和m的定义就会有问题,因为它们前面有可执行语句,所以m和k应该定义在i的前后。我当时使用VS2008的时候会报错,但是现在使用VS2013编译上面程序时不会有任何问题,所以,这个使用方法到底对不对,还是要看大家的编译器,C99以后基本都使用变量就近定义的方式,因为这样十分清晰。

变量在函数开头定义:便于修改

变量就近定义:便于阅读

变量在块语句的开头定义:有的临时变量放在语句块开头,可以不用在函数开头定义,并且在使用完毕后释放空间,可以这么做,但不要无故添加花括号来提高代码的结构。

总之,为了移植性更强一些,建议大家编写C语言的时候尽量将局部变量都定义在可执行语句前,块的开始处,这样不管是新的编译器或者老的编译器都可以正常编译。不过,随着变量定义就近原则的方便性的体现,可能使用变量就近定义会更好一些,至于如何抉择,大家可以根据项目需求和实际的情况而定。

本文如果对你有帮助,请点赞收藏《C语言可以在执行语句中间定义变量吗?》,同时在此感谢原作者。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
相关阅读
智慧树普通话语音与发声考试答案

智慧树普通话语音与发声考试答案

智慧树普通话语音与发声考试答案请关注【豆芽校内】公众▎号 发送题目即可 取得答案智慧树普通话语音与发声考试答案【豆芽校内】明细分类账简称总账,是根据总分类科目开设,用以记录全部经济业务总括核算资料的分类...

2023-06-23 #经典句子

广东高考英语听说考试 CELST故事复述 Part C Retelling 解题技巧

广东高考英语听说考试 CELST故事复述 Part C Retelling 解题技巧

...24分)考题要求从内容的完整性、语言表达的准确性以及语音语调流畅度等角度进行考查。1. 内容的完整性核心信息是在复述过程中必不可少的内容,也是机器评分时的采分依据。因此,理清故事的核心信息点,是保证复述内容...

2023-06-18 #经典句子

语言翻译机“角逐赛” 讯飞翻译机占据王者C位

语言翻译机“角逐赛” 讯飞翻译机占据王者C位

...工的人员日益增多,翻译类硬件也开始蜂拥推出。不论是语音技术大佬科大讯飞还是3C硬件扛把子小米,都瞄准不同细分市场推出了翻译机。今天小编就挑选三款语言翻译机,一起看看各有哪些看家本领!最强王者:讯飞翻译机3...

2023-07-27 #经典句子

成考专升本英语:备考方法及答题技巧详解

成考专升本英语:备考方法及答题技巧详解

...方法及答题技巧详解专升本英语考试主要考查考生对基本语音、词汇和语法掌握,以及对基本知识综合运用的能力。对考生来说,这并不容易,要一定努力才可取得较好成绩。下面介绍专升本英语考试的基本概况、试卷试题,让...

2023-10-15 #经典句子

「百度AI趋势解读」自然语言交互产品的当下及未来

「百度AI趋势解读」自然语言交互产品的当下及未来

...产品的最核心技术就是自然语言处理。相比计算机视觉、语音识别、语音合成等感知技术,自然语言处理所取得的进展仍然达不到“自然”交互的要求。微软亚洲研究院副院长周明博士也曾提到“语言智能是人工智能皇冠上的明...

2015-11-30 #经典句子

频语法点:倒装 从句 非谓语分析 语法点早掌握 做题不出错

频语法点:倒装 从句 非谓语分析 语法点早掌握 做题不出错

...大框架,这个大框架分是三个不同的英语模块,一部分为语音一部分为词汇,另一部分为句法。语音是我们掌握单词,学习听力的基本功也是我们学习的基础。我们学习语言的目的是为了交流并不仅仅是为了考试,不过现在大部...

2020-11-30 #经典句子

语音输入就是生产力——横向评测:百度语音输入vs讯飞语音输入

语音输入就是生产力——横向评测:百度语音输入vs讯飞语音输入

毫无疑问,国内最早进行语音输入的机构是讯飞输入法,不断提升语音输入的准确性。但当下阶段,讯飞语音输入法的效果则在不断降低之中,这一类型的问题为何会产生笔者无从知晓,百度语音输入能力超过了讯飞。本篇文章...

2023-06-12 #经典句子

才儿坊:幼儿语言发展特点及规律

才儿坊:幼儿语言发展特点及规律

幼儿言语发展可以分为语音的发展、词汇的发展和句子的发展。才儿坊将分享其各自的特点也发展规律。语音的发展对3~6岁幼儿声母和韵母的发音进行了研究,得出幼儿语音发展的特点。才儿坊分享幼儿语音的发展规律。(1)...

2023-07-30 #经典句子

智能语音平台:技能搭建与多轮交互

智能语音平台:技能搭建与多轮交互

通过本文内容,你将了解在搭建智能语音平台的过程中,如何搭建一个技能以及支持不同的意图,他们的本质和边界是什么?接下来我将从这几方面进行展开:了解语音全流程框架意图的组成部分多轮交互一、语音全流程框架图...

2008-10-06 #经典句子