前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >编程答疑:记不住运算符优先级怎么办?

编程答疑:记不住运算符优先级怎么办?

作者头像
卤代烃
发布2020-07-09 15:31:13
6290
发布2020-07-09 15:31:13
举报
文章被收录于专栏:超级码力超级码力超级码力

最近有几个初学者问了我几个编程上的问题,我觉得其中一个特别有代表性,拿出来和大家分享一下,让大家避一下坑。

题目的内容是分辨不同运算符的优先级,大概内容是这样的:

e = a < d ? a++ : a = d

然后他问我这种题型怎么做,有什么口诀可以记住多个运算符的优先级。

我的答案很简单,不需要记忆

不要着急反驳,看了下文再说。

先举一个简单易懂的例子。大家做数学题的时候,有没有写过这样的计算式:

2 - (3 * 4 / 5 + 6^7) - 8 * ln9

一行写了五六个运算符,有好几个层次的优先级,最后算出来一个答案。

我保证你这样写会被数学老师追着打:你不要步骤分了?

写代码一个道理,这么多运算符混在一起,万一哪里出错了,你一时都查不出来错在哪里。

我们再看一张表,下图列举了 C++ 的所有优先级,嗯,18 个,我又不是编译器,反正我记不住。

随着工作经验的丰富,你会用不止一门的语言。最关键的是,不同语言的运算符优先级不一样,(比如 C 和 C++)当你同时写几门语言时,优先级往往会记混,这时候记忆毫无卵用。

所以解决这个问题的唯一办法是加括号查文档

加括号很容易理解,因为括号运算级最高。至今我还记着小学老师 “先算括号内,再算括号外” 的谆谆教诲,能用加括号解决的问题都不是问题。

当你括号加多了,你会发现可读性也会变得很差:

2 - (((3 * 4) / 5) + (6^7)) - (8 * ln9)  // WTF???

这时候你就得学会拆分代码,尽量不要一个表达式涉及多层优先级。

查文档就更简单了,哪里不会查哪里,妈妈再也不担心我的学习。给大家推荐一个非常好用的查文档软件:DevDocs,不清楚的语法和 API 都可以一键搜索,无敌强大了。

在线版本:devdocs.egoist.moe

桌面版本:devdocs.io

国内网速慢的同学可以再微信后台回复【DevDocs】获取最新的软件更新,内含 Mac 和 Win 两系统版本,可按需下载。

按道理来说,文章写到这里就结束了,其实下面才是我说的重点

其实大部分初学者学习编程时,经常会陷入死胡同,那就是过于关注符号。比如说你想让一个变量自增加一,你写成 i++++ii += 1i = i + 1其实都可以达到目的,上手写代码时挑一个业内最公认的写法就行,但是总有人认为这些是真知识,另一个问题是学校考试很偏门,考的就是你「茴」字的四种写法,你不能说它没用,但是这些细枝末节的东西对于初学者真的帮助不大。

初学者最关注的是编程是什么?无非是语言能做些什么,能不能上手做些小玩意儿。但很多入门书只止步于 “这门编程语言的语法是什么” 以及 “怎么用这门语言在屏幕上打印出一颗杨辉三角”,WTF ?

由此我才会在「初学者最适合的图书」里推荐《 python 编程:从入门到实践》,这本书是非常适合初学者学习的,可以最大的解决初学者的问题,另外给大家推荐一篇博文《解谜计算机科学

http://www.yinwang.org/blog-cn/2018/04/13/csbook-chapter1

可以最大程度上解决初学者 “计算机科学是个什么玩意儿” 的问题。

另一个问题可能是初学者黑客题材的电影看多了,一屏花花绿绿的字符,一个 Geek 上天入地无所不能,伴随着电脑上一个华丽丽的进度条,总能在最后关头解决危机。这样给人的印象就是编程是一个非常酷炫非常需要智力的工作,由此代码也要写的酷炫。

什么最酷炫?当然是别人看不懂最酷炫。不能人眼识别运算符优先级算什么高手?不能徒手写汇编算什么高手?这就是典型的没有公主命得了公主病。我觉得初学者写代码应该牢记一点:代码是给人看的,不是给机器看的

无论是团队合作,还是个人独立项目,编写修改代码的永远是人。这时候通俗易懂的代码才是最重要的,这样合作才能最大提高效率。

而在机器看来,你把一个变量取名为 「'wtf'」 或者 「'o(≧v≦)o~~'」 或者 「?」 都没有问题,在机器看来都是 01 的排列组合,都是 CPU 上跳动的高低电平,他们根本不 care 这些。一味着最求酷炫最后只能挖坑坑了自己,所以骚年要收好自己那颗躁动的心,安安稳稳学些真知识。

上面就是一些我的经验之谈。编程其实是个很简单的手艺,学会他一点儿都不难,你感觉困难主要是小时候没有接触 + 学校的垃圾教材,只要有些恒心,找好教材,编程学习真的很容易。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-04-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 卤蛋实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档