c语言总是从开始执行,c语言总是从开始执行的

kodinid 8 0

大家好,今天小编关注到一个比较意思的话题,就是关于c语言总是从开始问题,于是小编就整理了3个相关介绍c语言总是从开始执行的解答,让我们一起看看吧。

  1. 为什么在单片机里C语言中main函数执行完之后还要重新执行?
  2. c语言怎么跳出无限循环?
  3. 为什么C语言编写的系统程序执行速度比用其他语言编写的快?

什么单片机里C语言中main函数执行完之后还要重新执行?

上电后程序指针PC就会从程序存储器的0地址开始执行,

中间会按照程序的要求跳到需要的地址执行,

c语言总是从开始执行,c语言总是从开始执行的-第1张图片-安济编程网
图片来源网络,侵删)

如果执行到最后一条指令完而没有相应的跳转指令

PC会继续往存储器的下一地址执行,

而下一地址是没有烧写指令进去的(理论上是全1或全0,随厂家而定),这时就出现了跑飞,

c语言总是从开始执行,c语言总是从开始执行的-第2张图片-安济编程网
(图片来源网络,侵删)

在PC将所有地址都跑一遍之后会回到0地址,如此循环

不过在main主函数里面最后加一句while(1);让函数进入死循环,可解决此问题。

c语言怎么跳出无限循环?

编写程序中,一般情况下不建议使用无限循环(又称为死循环),若一定要使用无限循环,我们有这么两种方式来跳出无限循环。

c语言总是从开始执行,c语言总是从开始执行的-第3张图片-安济编程网
(图片来源网络,侵删)

1.break;用来直接终止循环,向下执行接下来的语句

2.return;终止此循环,向上返回,从头开始。意思为返回整个函数,后面的,不管是循环内还是循环外都不执行。

在C语言中可以使用break,和return语句结束循环。代码示例 break

int i;for(i=0; i

<10; i++){ if(i>3) // 如果i>3,跳出for循环,执行printf语句 break; }printf("%d", i);

i>3的时候结束循环;

用return语句(一般用在函数体中,作为函数的返回值跳出该函数,也即跳出了函数体中的for循环)

int fun(int a){ int i; for(i=0; i

<a; i++) { if(i>3) // 如果i>3,则函数执行完毕,并返回变量i的值,也即跳出了for循环 return i; }}

为什么C语言编写的系统程序执行速度比用其他语言编写的快?

我是程序员,我从我理解的角度回答这个问题,抛砖引玉,引发讨论。

所有语言写的程序,最后都要编译或者解释机器语言0101来执行。机器语言0101的基础单元就是指令,好比英文字母单词

最开始的编程就是写出一组组指令,好比写英语作文。这个过程就是最直接的最快的。

但是原始指令写程序对于人类来说太难理解了,于是就出现了高级言和对应的编译器

编译器就是把高级语言翻译成原始指令,也就是机器语言0101。

问题就是这个翻译的过程,除非编译器特别牛逼,每行代码翻译都是翻译成最直接高效的机器语言。显然这是不可能的,翻译的过程肯定有多余和啰嗦的部分。

比如英文翻译成中文,有的句子可以翻译成一句成语,也可以翻译成一段大白话。

一方面这考验语言编译器的水平,同样的源码不同编译器编译后的执行效率不一样。另外一方面语言越复杂越难翻译,汇编机器语言,最好翻译,一行对应一个指令,高效。C需要面向过程的,增加了一些分支,循环等高级需要特性,也比较好翻译。

后来的更高级的语言加入了各种面向对象接口,lamda表达式等高级特性,翻译后的指令执行效率就更低一些。

另外还有一些语言是要运行解释器或者虚拟机上执行的,比如java shell perl等等,这就好比通过翻译软件聊天,边聊天边翻译,聊一句翻译一句,效率自然就更低了。

到此,以上就是小编对于c语言总是从开始执行的问题就介绍到这了,希望介绍关于c语言总是从开始执行的3点解答对大家有用。

标签: 执行 语言 循环

上一个c语言程序的注释是( ).,c语言程序的注释是以什么开头什么结束

下一个ug1942编程教程,ug1926编程视频教程