点击上方“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

译者:白云鹏

————— 推荐阅读 —————

点击图片即可阅读

邪恶的编码魔咒,你中招没?相关推荐

  1. 简历投递误区你中招没?

    蓝豹职业辅导:专业简历制作,就业辅导,模拟面试,职业规划专家! 简历投递误区你中招没? 毕业生简历经常出现的问题, 简历投递误区,你不注意投一次浪费一次岗位机会, 话不多说. 看看你的简历投错了没? ...

  2. java中bigdecimal除以int类型的数据怎么实现_大部分Java程序员都会忽略的几个问题,你中招没?...

    1. 正确使用 equals 方法 Object的equals方法容易抛空指针异常,应使用常量或确定有值的对象来调用 equals. 举个例子: 运行上面的程序会抛出空指针异常,但是我们把第二行的条件 ...

  3. 大部分Java程序员都会忽略的几个问题,你中招没?

    1. 正确使用 equals 方法 Object的equals方法容易抛空指针异常,应使用常量或确定有值的对象来调用 equals. 举个例子: 运行上面的程序会抛出空指针异常,但是我们把第二行的条件 ...

  4. 三伏天不能吃冷饮?7月这些蜚语你中招没

    当大暑撞上中伏,天气热得"无处可躲".在高温高热的桑拿天里,吃着小龙虾再喝上一杯冰镇啤酒,别提有多惬意了,然而因为一些蜚语最近人们却不敢这样肆意享用了. 网传的"小龙虾身 ...

  5. ios-bug.html黑屏重启,iOS12曝重大BUG:iPhone黑屏无法充电!你中招没?

    在经历了噩梦般的iOS11后,广大果粉终于迎来了最新的iOS12,这个系统被苹果工程师称之为有史以来最好iOS系统.它修复了数不胜数的BUG,优化老款iPhone的性能,提高了所有苹果设备的安全性和稳 ...

  6. 99%苹果手机用户被“大数据杀熟”,你中招没?

    如今,用APP打车是司空见惯的事情,不过你有没有发觉自己已成"大数据杀熟"的重点目标了! 复旦大学管理学院孙副教授和其团队进行了一项数据收集和分析研究,得出了一人令人震惊的结果. ...

  7. Windows系统上那些把i7变i3的“魔法师”,看看你中招没?

    我们电脑上为何要装许多工具? 本质上就是为了效率,可是有些工具功能不怎么强悍,拉低电脑性能却"首屈一指". 双核变单核,I7变I3,这都不是梦! 1.金山毒霸 金山毒霸早年是一款杀 ...

  8. 程序猿惯用口头禅与内心真实 OS,快来看看你中招没?

    作者 | 他二哥 来源 | 腾讯技术工程 滑动查看真实内心 OS 滑动查看真实内心 OS 滑动查看真实内心 OS 滑动查看真实内心 OS 滑动查看真实内心 OS 滑动查看真实内心 OS 滑动查看真实内 ...

  9. 央视曝光!朋友圈八大骗局正在瞄准你的个人信息 看看你中招没?

    朋友圈是微信上的一个社交功能,用户可以通过朋友圈发表文字和图片,同时可通过其他软件将文章或者音乐分享到朋友圈.用户可以对好友新发的照片进行"评论"或"赞". 近 ...

最新文章

  1. Error ./include/caffe/util/mkl_alternate.hpp:11:19: fatal error: cblas.h: 没有那个文件或目录...
  2. 【函数】02、函数进阶
  3. 一些基本的ABAP技巧
  4. 检索数据_9_返回的字段在某个范围内的数据
  5. 防火墙(2)——firewalld
  6. typescript索引类型_TypeScript的索引类型与映射类型,以及常用工具泛型的实现
  7. android微信小程序支持横屏,微信小程序关于横屏存在的一些问题
  8. 基于IdentityServer4 实现.NET Core的认证授权
  9. pytorch基础一:张量
  10. 文本挖掘之 文本相似度判定
  11. 【POJ1177】【HDU1828】【codevs2149】矩形面积周长并
  12. web项目嵌入Jetty运行的两种方式(Jetty插件和自制Jetty服务器)
  13. python图像边缘检测_python 简单图像处理(11) 空间域图像锐化(边缘检测)
  14. 【雕爷学编程】Arduino动手做(94)---L298N电机驱动板
  15. 小米笔记本怎么恢复出厂的系统
  16. set-cookie无法存入到浏览器cookie问题汇总
  17. Hackintosh-OpenCore系列篇-Windows install
  18. HAPI使用方法总结(HITRAN数据库,HITEMP数据库)
  19. React基础(2)—— React函数式组件使用ref
  20. ZUCC高级程序设计实验01

热门文章

  1. C++11 多线程线程共享数据
  2. 顶饰条行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  3. php小数乘法,三 小数乘法精品|小学数学,北师大版,四年级下册,数学精品下载_21精品_21世纪教育网...
  4. 获取当前ip_百度定位:IP定位、浏览器定位、SDK辅助定位
  5. 简单内网映射到公网方法--免费
  6. “加薪”、“洗手间”都不能提?亚马逊内部员工通讯 App 曝光
  7. 字节跳动宣布取消大小周;淘宝、支付宝等阿里系App取消开屏广告;Python 3.10 beta 4 发布|极客头条...
  8. 在 GitHub 上提交代码必备指南!
  9. WebAssembly 将成为互联网的终结?
  10. 启智社区亮相2020全球智博会,千万奖金悬赏优秀开发者