内容简介:邪恶的编码魔咒,你中招没?
点击上方“ CSDN ”,选择“置顶公众号”
关键时刻,第一时间送达!
自从我观看了Gary Bernhardt所推崇的视频以后,就对某些编程语言的怪异表现着迷了。一些编程语言比其他语言有更多令人感到意外的表现。例如:有一整本关于 Java 语言的书,专门介绍它的边界类(Edge)及一些特性。相应的,对于C++语言我们可以参考它的标准规范,花上200美元即可。
下面是我最喜欢的内容,是一些令人感到惊讶、搞笑的内容,还有一些像是魔咒。一般来说,使用这些有着特殊行为的代码被认为是邪恶的,因为你的代码不应该给人带来惊讶的感觉。如果你执意要去做下面这些愚蠢行为的话,会有不少洋相等着你呢。话虽如此,知识就是力量呢,我们开始吧。
在 Python 2中对True进行了错误的重赋值
英文中的Two和True的发音是押韵的,但这并没什么意义。
幸好Python 3以来将True、False和None作为保留字后,重复赋值的做法就会产生SyntaxError这样的错误。但这样奇怪的做法远比你在其他人的标准头文件中用#define true false少得多。
Java和Python语言中不可思议的表现
对于Java程序员来说,“==”运算符的语义常常令人感到困惑。但是,即使是一些微不足道的场景,操作符的不一致性表现也会使情况变得比较复杂。即便这样做能够提升程序的执行效率。
在[-128,127]之间,JVM将使用同一个引用。更令人称奇的是,python语言也有同样的行为。
即使变成负值,结果也是一样的。
相同的实例代码中,python语言解释器的整数区间下限似乎是-5。在[-5, 256]范围内的整数区间的得到了相同的ID值,这样就更奇怪了。
似乎使用破坏性赋值会对既有规则有所改变。我不知道为什么会是这样,实际上我遇到过一个堆栈溢出的问题并试图去理解它。我的猜测是,内存中一个列表里重复的值是指向相同对象的。
C语言中的反向下标
反向的下标符让任何一位开发者都会感到头疼。
这种写法能够运行的原因在于array[index]实际上只是*(array + index)的语法糖。多亏还有这样可互换的性质,我们可以将数组名和其索引进行互换而得到相同的结果。
C语言中的”一直走”操作符
当第一次看到→操作符的时候,看上去似乎是语法错误。编译的时候,它看起来像是一项没有被归档的语言功能特性。不过,这些想法都是不对的。
操作符→实际上是两个操作符,在所举的例子中被解析为(x--)>0。众所周知,这样做在成品软件中会造成相当大的混乱,极为邪恶。
C语言中的sizeof运算符
运算符sizeof是一个编译时运算符,它提供了有趣的属性。
由于在编译时sizeof运算符的实例就进行了运算,那么x+=1就不会被执行。同样有趣的是:研究表明printf(“wtf?”)这行代码是最典型永远不会被推入堆栈中的情况。
Lua、Smalltalk、MATLAB以及更多语言的索引从1开始
/r/ProgrammerHumor/这个目录下有很多索引从1开始所闹的笑话。令人感到惊奇的是,事实上很多编程语言的数组索引都是从1开始的。
Ruby语言中0的值是true
……也只有 Ruby 语言。
修正一下:在reddit站点上有人指出,Lua、Lisp和Erlang语言也是如此。
C语言中的Trigraph、Digraph和Token
由于历史原因,在 C语言 中有那些非字母和非数字符号有其替代符。
一些国外的设备,例如IBM3270就没有提供C/C++中常用的一些符号,因此提供了那些digraph、trigraph和token,目的在于不歧视特定的字符集。
我希望这篇文章能够让您感到有趣,还可以在reddit网站上进行讨论。
原文链接:http://9tabs.com/random/2017/12/23/evil-coding-incantations.html
作者:Jekyll
译者:白云鹏
————— 推荐阅读 —————
点击图片即可阅读
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 数据科学家易犯的十大编码错误,你中招了吗?
- 几十人中招的勒索病毒为何比百万人中招“暗云Ⅲ”受关注?因王者荣耀!
- 360揪出PPT木马 自动播放就中招
- WannaMine升级到V3.0版本,警惕中招!
- 恼人的浏览器“下载炸弹”重现,Chrome 再次中招
- 紧急预警:Globelmposter再爆3.0变种,大型医院已中招
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Learn Python the Hard Way
Zed Shaw / Example Product Manufacturer / 2011
This is a very beginner book for people who want to learn to code. If you can already code then the book will probably drive you insane. It's intended for people who have no coding chops to build up t......一起来看看 《Learn Python the Hard Way》 这本书的介绍吧!