如果大家学过 Java ,可能对 C 这种先声明再定义的方式很不习惯,为什么函数在定义前需要再单独声明一下呢?我直接定义函数不声明行吗?答案肯定是不行的。

这个先声明再使用一直是 C 语言的标准,标准没有为什么,这就是一个标准,但是这个标准却是一个历史遗留问题。

上世纪 70 年代,大部分计算机内存很小,处理速度也比较差,所以导致代码的运行>时间很长,效率很差,这时候进行我们就需要考虑内存占用和编译时间的问题。因为 C 语言开发的比较早,而且 C 又是和硬件直接打交道的,所以提前声明一下函数能够提前分配内存空间,提升效率。说白了还是效率问题。

还有为什么 C 语言不选择采用预编译一下呢?

参考自

首先,C语言出现的很早,那时候编译器也是一个很复杂的东西,当时计算机的内存、外存都很小,编译器做的太大也是一个麻烦的事情,所以事先声明就成为一种规范,保留下来,目的是为了让编译器更简单,虽然这一切已经很过时了。

其次,预编译的成本很高,与脚本语言、解释语言不同,C语言项目的规模可以很大,比如操作系统一级的C语言工程,其源文件有几万个,涉及全局符号几十万个,这样规模的项目预编译一次的负担是很高的,如果是整个项目完全扫描一遍,遍历所有全局符号,再进行真正的编译,估计很多码农都会疯了,等待时间会特别长。

再次,C语言是一种静态链接的语言,如果一个项目被设计成只编译,不链接的方式,比如有些库就会被设计成这样,有些合作开发的项目里,组员之间有时候也只提供obj文件,那么某些全局符号可能就不包含在现有的代码里,那么预搜索就一定找不到某些符号,那么该怎么办?如果不提供声明,这个代码就没办法编译了。

基于以上几点考虑,所以C语言才设计成这样,对于开发者而言,不算友好,但也不算很糟糕,甚至在某些方面是有好处的。

对于一个函数来说,它的最终目的就是通过一系列的逻辑处理获得我们想要的结果,逻辑处理离不开各种程序控制语句,比如说 While 、for、do while 等,下面我们就要来讨论一下这些程序控制语句。

程序控制语句

在有些时候的某些程序可能会重复做一件事情,就应该让计算机做这些重复性的工作,这才是我们需要计算机的意义。毕竟,需要重复计算是使用计算机的主要原因。

C 语言中有很多用于重复计算的方法,我们下面先来介绍其中的一种 — while 循环。

while 循环

下面我们通过一段代码来看一下 while 循环的使用。

#include 
int main()
{
 int i = 1;
 while (i <= 10)
 {
  printf("%dn", i);
  i++;
 }
 return 0;
}

这段代码首先声明了一个 i 变量,然后使用了 while 循环来判断 i 的值,当 i 的值 10 就会直接跳过循环,不会输出任何结果就直接返回 0 。

如果 i 的值在 10 以内,就会循环打印出来 i 的值。这就是 while 循环的作用。

用通俗易懂的语句来描述 while 循环:当某个判断条件为 true 的时候,循环执行 while 中的代码块。

流程图如下:

break在c语言中是什么意思_break是什么语句_breakc语言什么意思

在 while 循环中的一个关键点就是进入 while 循环的判断,上面代码就是判断 i 。因为浮点数的舍入误差会导致在逻辑上应该相等的两数却不相等。例如,3乘以1/3的积是1.0。如果用把1/3表示成小数点后面6位数字,乘积则是 .,不等于 1。

for 循环

for 循环一个非常明显的特征就是把三个行为组合在一处,也就是初始化、判断、更新,如下代码所示。

#include 
int main()
{
 for(int i = 1;i <= 10;i++){
  printf("%dn", i);
 }
 return 0;
}

可以看到,上面代码中 for 循环分别做了三件事情,每个表达式用 ; 进行分隔。

for 循环的一般形式定义如下:

for(表达式1;表达式2;表达式3)
{
    语句;
}

这里要注意的是,表达式 1 只在循环开始时执行一次,而表达式 3 是循环结束后再执行。表达式 2 可以省略,省略后默认值为 1,则判断为真,for 循环就会成为一个死循环。

for 循环的流程图如下

break在c语言中是什么意思_break是什么语句_breakc语言什么意思

do while 循环

一般来说,循环的方式可以分为两种:入口循环和出口循环,什么意思呢?入口循环是先进行循环,再执行每次循环要做的事情,比如上面的 while 循环、for 循环,他们都是先进行判断是否需要进行下一次循环,如果需要的话,才会打印出 i 的值,这就是入口循环。

而出口循环则是要先执行代码,再判断是否要进行下一次循环,即在循环的每次迭代之后检查测试条件,这保证了至少执行循环体中的内容一次,典型的出口循环就是 do … while。

我们把上面的代码进行修改:

#include 
int main()
{
 int i = 1;
 do{
  printf("%dn", i);
  i++;
 }while(i <= 10);
 
 return 0;
}

从输出结果可以看到,do while 循环在执行完循环体后才执行测试条件,所以 do … while 循环至少执行循环体一次,而 for 循环和 while 循环在执行循环体之前先执行测试条件,do … while 的一般形式如下

do
 代码
while ( 表达式 );

do … while 循环的流程图如下

break在c语言中是什么意思_break是什么语句_breakc语言什么意思

到现在为止, C 语言中的程序控制语句我们都了解了,那么该如何进行选择呢?

实际上上面我们已经稍微讨论了一下如何选择的问题了。

while 循环和 for 循环很类似,这两类循环都是先进行一次循环条件的判断,然后再执行具体的循环体操作,只要一次循环条件不满足则一次都不会执行;而 do … while 循环会至少先进行一次循环,然后才会执行循环判断。

一般来说,使用 for 循环的场景比较多,因为 for 循环形式更加简洁,而且在 for 循环中,变量和判断以及更新的作用域都在循环体内,不会有其他外部代码来修改这些变量,更可控,在 while 和 do … while 循环中,变量的更新不可控,而且代码也没有 for 循环可读性强。

break 和

break 和 相当于是循环体内领导者的这样一个角色,有了这两个角色存在,循环体内的代码会根据这两个关键字来判断是中断循环还是执行下一次循环。

C 语言中的 break 有两种用法:

break 用于中断循环:如下代码所示

#include 
int main(void)
{
 for(int i = 1;i <= 10;i++){
  if(i == 5){
   break;
  }
  printf("i 的值 = %dn",i);
 }
 
 return 0;
}

输出的结果是 i 的值 = 1 – 4, 当 i == 5 时,会进入到 if 判断中,if 判断会直接触发 break,break 用于跳出当前循环,当前是 for 循环,所以 break 会直接跳到 for 循环外面,也就是直接 ,不会再打印 i 的值。

breakc语言什么意思_break是什么语句_break在c语言中是什么意思

关键字用于跳过当前循环,执行下一次循环,它和 break 很相似但是有着本质的区别,break 是跳出循环, 是执行下一次循环,我们同样拿这个代码来说明,只需要把上面的 break 改成 即可。

#include 
int main(void)
{
 for(int i = 1;i <= 10;i++){
  if(i == 5){
   continue;
  }
  printf("i 的值 = %dn",i);
 }
 
 return 0;
}

(这段代码的输出结果会输出出 i = 5 以外的值)

从输出结果可以看出,只有 i = 5 的值没有输出,这也就是说,当代码执行到 i == 5 的时候,会进行 继续执行当前循环,从而跳过这次循环后面的代码,如下图所示。

breakc语言什么意思_break是什么语句_break在c语言中是什么意思

总结

这篇文章我主要和你聊了聊 C 语言中的函数,函数定义、函数返回值、参数以及程序控制流程中的三类循环的特点以及选型,最后又介绍了一下 break 和 的作用。

如果文章对你有帮助,还请各位小伙伴们三连支持哦!

———END———
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,永久会员只需109元,全站资源免费下载 点击查看详情
站 长 微 信: nanadh666

声明:1、本内容转载于网络,版权归原作者所有!2、本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。3、本内容若侵犯到你的版权利益,请联系我们,会尽快给予删除处理!