看淘网-高情商聊天恋爱宝典!| 下载蜜小助-恋爱聊天话术

当前位置: 首页> 脱单技巧

简短的表白语句:51单片机编程高级部分1短代码不一定是有效的代码

发布时间:2019-07-17 20:07:04 作者:xhs 阅读:1110
简短的表白语句:51单片机编程高级部分1短代码不一定是有效的代码(我上大学的时候,我的C语言老师喜欢在课间向我们吹嘘,经常说我写了数万行代码。刚读大学的我,被老师愚弄了一冷冷冷,我想当我还学习的时候,写上数万行的代码,月薪超过一万不是梦!\但事实是,与伟大的思想和工程师一起工作,许多人实际上可以编写数千行代码,但这并不意味着他们是好的。吹嘘自己写了多少代码的人往往没有什么好吹嘘的。真正的伟人以他们的代码简短、高效、稳定和可读而自豪。今天,我将讨论短而有效的代码。许多人认为短代码意味着高效,但这和那些吹嘘自己写了多少代码的人一样肤浅。下面我将通过单片机编程的常用代码说明,短代码未必是有效的代码。\n1。自我增加和自我减少操作\n我们经常看到这样的情况:\ni++\ni-\nagain,我们知道这样的方式:\ni=i+1\ni=i-1\n写它的更好方式是什么?大多数人说我加上,为什么?他们倾向于说,“I++”这很容易写,很有效。i++比i=i+1更有效。\n写效率的优势是肯定的。键入3次与键入5次不同。至于输入效率,我将在其他文章中提到它。\n有些人说,i++只对一个变量进行操作,i=i+1,当您执行+1操作时,必须重新分配它,这不是很有效。这个观点看起来不错,但它犯了一个形式上的错误。\n大多数人的观点都是通过语言本身来分析的。换句话说,I=I+1的直觉是I+1被执行然后被分配,这是两个动作;I++无论如何都是一个动作,但它不是真的。事实上,在keil-c51开发环境中,它们都被编译成相同的指令,如图1所示。\n配置1个i++和j=j+1的编译结果\n红色框是i++之后编译的汇编指令,蓝色框是j=j之后编译的汇编指令。+1.即使不懂组装也可以看到,是inc指令。0x08和0x09是变量i和j的物理地址,只是地址不同。这意味着,无论您编写i++还是j=j+1,它们都被编译成由CPU执行的相同指令。\n结论:i++和i=i+1的执行效率在单独使用时是完全相同的。它可以用任何一种方式书写,而不是出于个人习惯。\n2。更少的行更有效\n似乎有一种简单而有效的写作方式多年来吸引了许多初学者:if(i+==x)和if(++i==x)。许多教师花大量时间讨论他们的差异和用法。然而,在keil-c51编译环境中,挣扎于这两种用途是愚蠢的。为了本文的目的,让我解释if(i++=x)和if(++i==x)之间的区别。ndelta代码1。\nif(i++=2)\n \n k=k+5;\n//用户代码\n \在代码1中,当i的值等于3时,执行括号中的代码。\ndelta代码2。\nif(++i==2)\n \nk=k+5;\n//用户代码\n \n在代码2中,当i的值等于2时执行括号中的代码。\n许多人知道这个结果,并为知道这个“技术”而自豪。这对初学者来说是很痛苦的,两种不同的写作结果,导致调试时间很长。如果初学者问有经验的人,他们通常是这样解释的:如果(i++=2)是i++,那么在执行if条件语句判断时,如果(++i==2)是i判断值的第一个引用,然后执行++i。这有意义吗?是的,因为编译器就是这样做的。如果您感兴趣,请自行调试。所以,很多人,当他们写一个程序时,他们用这个技巧来写非常聪明的代码。不是真的。让我解释一下原因。\n我们写代码,大部分是为了给别人看,除非你是个初学者,否则到处都写代码拼音,拼写错误的英语,而不是标准的缩进。但是作为一名教师,作为一名硬件开发人员,您的代码既需要维护,也需要有用。可维护性涉及很多事情,其中最直观的是可读性,所以让我们先来谈谈可读性。\n对于初学者来说,第一个接触是I++,++I,I=I+1这样的基本内容。我们也很容易从老师那里知道,i++、++i是自增量运算。因此,我们的直觉告诉我们,上面提到的两段代码应该执行相同的代码,只是为了在测试后发现差异。它说的是直觉,是的,人们只是不能避免直觉判断,即使我们经常被他们欺骗。例如,上面提到的i++和i=i+1,其中很多都是关于谁最有效的直觉,但它们并不是基于任何事实。我不反对老师解释if(i+==x)和if(++i==x)之间的区别,但我想添加最后一句话:不要担心这些用法,忘记搜索互联网。因为您可以用以下格式编写代码:未签名的char i,k;\ni=i+1;\nif(i==2)\n \nk等于k+5;\n \nso无论i++、++i还是i=i+1;都可以获得所需的结果。这样,读者就不需要考虑if(i++==x)和if(++i==x)之间的区别。在我的代码中,它都是这样写的,我的一些朋友看着它并闻了闻。他说:“当你能把一行写得像(++i==2)一样时,一行比两行更有效吗?”一条线比两条线干净吗?对于这类人来说,开始并不重要是做朋友,时间很长,类似的“聪明”建议很多,我尊重并远离它。\n让我们看看一行是否真的比两行更有效率。\n德塔代码3。\n未签名的char i,k;\n++i;\n如果(i==2)\n \nk等于k加5;\n \ne调试结果如图2所示\n配置2代码3 \n++i和if(i==2)编译以下语句:\n in c 0 x08\nmov a,0 x08\ncjne a,0 x02,c:0010\n读者可能会说,“我不知道如何组装”,但这没问题。让我们写下这三行程序集,看看下面的代码。\n默认代码4。\n未签名的char i,k;\n如果(++i==2),n \nk等于k加5;\n \n调试结果如图3所示\n配置3代码4 \n红色框是如果(++i==2)编译的程序集语言:\ninc 0 x08\ nmov a,0 x08\ncjne a,0 x02,c:0010\n这三行熟悉吗?是的,它与代码3完全相同,这意味着,无论您如何编写它,编译的汇编语句right'、'4e99b361f4faf8d5'、'zjq9wklcqylqci7dw8qwmturn0hcri',2'相同,执行效率自然是相同的。因此,没有结论认为后者比前者更有效。\n至于阅读效率,我只谈我的个人感受。当写进代码的格式时,无论你是老师,还是开发人员,当代码被别人引用、修改时,只要读者不太粗暴,都能理解。但写的格式为代码(4),至少在开始单片机C编程时,阅读会造成麻烦,不幸的是这个人也很健忘,忘记了如果(++I==2)和如果(I++==2)的区别,也许老师没有谈过区别,所以几乎会出现理解这个问题。\n这不是后退一步,它是一个进步,至少在不加和减的情况下,程序员不必担心这个问题。\n3。当我编写程序、切换case语句和经常使用if语句时,短语句并不一定有效。在早期的开源设计代码中,几乎所有的都使用开关案例,然后逐渐使用if或if elseif。我将在其他章节中详细阐述这两个声明的具体原因。本文主要讨论两个语句效率问题。\n朋友和同事互相查看代码并不少见,我在一段代码中看到了这一点:\nUnsigned char test1()\n \nUnsigned char m=2,n;\nif(m==0)\n \nn等于m乘以10加1;\n \nif(m==1)\n \nn等于m乘以10再加1;\n \n如果(m==2)\n \nn等于m乘以10再加1;\n \n返回n。\n \n那时,我的整个程序有问题。我向我的朋友征求建议,并告诉我代码可能出错的地方。当我看到上面的函数(这是一个简化的例子,不是实际的代码,而是相同的结构)时,我开始喷洒。\n朋友:你的代码级别,我甚至不费心去阅读,你先优化代码,我会帮你检查一下问题。\n备注:级别有什么问题?\女朋友:代码简短、高效,你这么多人如果,看起来不舒服。如果您在这里使用switch case语句,它将看起来更舒适,执行效率更高。\ni:••••••••\n我们再也没有问过他,因为我们不再处于同一级别,与这样的人谈论编程是对我们智力的侮辱。\n这是真的吗?我朋友说?switch case语句是否真的比if更有效?这次让我们用不同的方式来看看效率,看看switch case语句的效率是否比if语句更快。测试代码如下所示:\n未签名的char test1()\n \n未签名的char m=2,n;\nif(m==0 \n \nn等于m乘以10加1;\n \nif(m==1 \n \nn等于m乘以10加2;\n \nif(m==2 \n \nn等于m乘以10加3;\n \n返回n。\n \n未签名的char test2()\n \n未签名的char test2()\nm=2,n;\n开关(m \n \ncase 0:n=m*10+1;break;\ncase 1:n=m*10+2;break;\ncase 2:n=m*10+3;break;\n默认值:break;\n \n返回n.\n \\nvoid main()\n \\n未签名的char tmp.\nwhile(1 \n \ntmp=test1();\ntmp=test2();\n \n \n \n这两个测试函数(test1()和test1()及\和\分别测试函数(test1()和test2())做同样的事情,让我们来看看调试功能的效率。调试调试结果如图4所示。\n配置4。\n红色箭头指示的“秒”是执行代码所用的时间。在执行tmp=test1()之前,时间有p简短的表白语句:51单片机编程高级部分1短代码不一定是有效的代码
相关文章
猜您喜欢
怎么试探前女友想不想复合?

女人是一种让男人捉摸不透的生物,特别是在分手后,就算有复合的想法,表面也会表现的很平静。所以需要男人根据情况自己判断。那到底该怎么去试探前女友想不想复合呢?

2024-02-21

狮子座女生的10个特点,追她之前摸透她的心

狮子座女生可不是那么好追的女生,看上去她平易近人、热情开朗,其实内心却有着自己的小傲娇,狮子座女生的10个特点,追她之前先了解一下吧!

2024-02-21

大街上怎么要女生微信不尴尬,这样要女生乖乖给你

很多时候男生就算在大街上遇到自己喜欢的女生类型,也不敢上来问女生微信,只能看着自己心仪的女生慢慢走远。下面给大家分享大街上怎么要女生微信不尴尬,这样要女生乖乖给你。

2024-02-20

用一个问题测试她喜欢你的方法,女生喜欢你就去追

想知道女生是不是喜欢你,教用一个问题测试她喜欢你的方法:你可以对她说一句话:你好像长胖了一点?(看看女生是什么反应。不过如果男生问出这个问题,可能让女生觉得你情商低,就算女生喜欢你也有一定的风险性)

2024-02-20

女生说心累怎么回复安慰她?分享正确回复方法

女生会在什么情况下说心累呢?可能是她工作上面遇到问题不好解决,让她觉得心累;可能是你对于女生的暗示无动于衷,女生觉得你不落教感到心累。那女生说心累应该怎么回复安慰她呢?

2024-02-19

惹女朋友生气检讨书1000字,哄她不再生你的气

如果男生犯了错惹女朋友生气,那就一定要想办法哄好她,因为是你错了呀。而想要哄好生气的女朋友,那你一定要认识到自己的错误,下面给大家分享惹女朋友生气检讨书1000字,希望能够帮助你哄好你的女朋友。

2024-02-19

婚姻恢复——维持感情让家庭重归平静

婚姻中有幸福的时候,也有不幸福的时候,夫妻应该做到维持好感情,才能顺利让婚姻恢复到幸福的时候,让家庭重归平静。

2024-02-19

怎么追巨蟹座女生?追巨蟹座女生怎么聊天

和巨蟹座女生谈过恋爱之后,就会知道她的内心真的很纯真,不过她性格上的复杂性则是让许多男生疑惑的关键,怎么追巨蟹座女生?追巨蟹座女生的时候要如何聊天呢?

2024-02-18

女朋友说分手后做朋友是什么意思?是真的做朋友么

如果女朋友说分手后做朋友是什么意思呢?如果是还爱着对方那就不应该选择分手,如果是不爱了那大家就应该彻底断了联系,真正深爱过的人是不可能在分手后做朋友的。下面就来分析女朋友的心理。

2024-02-18

暗恋一个人能有多难受?虐心回答句句戳心

暗恋是幸福的,却又是痛苦的,更是难受的,可遇而不可求的爱始终会令人感到绝望,那就是暗恋一个人所体会的难受,明明没有机会却又不想放手真的很痛苦。

2024-02-18

脱单神器
脱单神器
安卓版蜜小助APP 脱单神器
iOS版蜜小助APP 脱单神器

20W+可复制撩妹话术

实战案例+话术+视频+教程

热门脱单技巧
九宫格打字告白暗语_九键数字告白集合
九宫格打字告白暗语_九键数字告白集合
2019-06-10 36151
骑电动车的浪漫句子 一路追寻浪漫的巅峰
骑电动车的浪漫句子 一路追寻浪漫的巅峰
2019-12-18 29094
追已婚女人的技巧和方法 结过婚的女人要这么追
追已婚女人的技巧和方法 结过婚的女人要这么追
2019-10-17 26061
一加一等于几表白套路 表白成功率百分百
一加一等于几表白套路 表白成功率百分百
2020-02-05 23917
最难懂的表白暗语 雨下挚友,称断人和
最难懂的表白暗语 雨下挚友,称断人和
2019-10-17 22697
抖音表白算式5201314 抖音表白算式5211314
抖音表白算式5201314 抖音表白算式5211314
2020-06-15 22010
相亲男冷处理又不删你 教你几招治治他
相亲男冷处理又不删你 教你几招治治他
2019-12-06 21799
追女生早上幽默问候语 每天的爱都要让她第一时间知道
追女生早上幽默问候语 每天的爱都要让她第一时间知道
2019-09-18 21022
女追男后放弃男主吃醋怎么回事?占有欲作祟罢了
女追男后放弃男主吃醋怎么回事?占有欲作祟罢了
2020-11-17 19226
相亲内向男的一般进度 进度完全由你安排
相亲内向男的一般进度 进度完全由你安排
2020-03-05 18032