千家信息网

Java和Python中的诡异行为实例分析

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,今天小编给大家分享一下Java和Python中的诡异行为实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,
千家信息网最后更新 2026年11月02日Java和Python中的诡异行为实例分析

今天小编给大家分享一下Java和Python中的诡异行为实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

Python 2 中对 True 邪恶的重赋值

>>> True = False >>> True False

谢天谢地,这在 Python 3 中会导致 SyntaxError,因为 True、False 和 None 现在是保留字。它仍远没有 C++ 的那个恶作剧那么邪恶,把 #define true false 悄悄写进同事的开发机器的标准头文件中。

Java 和 Python 中的诡异行为实例

对 Java 新手程序员来说,== 的语义往往使人困惑。甚至在微不足道的情境下,这个操作符的前后矛盾也会使情况变得复杂,即使性能效益是值得的。

Integer a = 100; Integer b = 100; System.out.print(a == b); // prints true   Integer c = 200; Integer d = 200; System.out.print(c == d); // prints false

JVM 会对区间 [-128, 127] 内的值使用相同的引用。更奇怪的是,Python 中也有同样的行为。

>>> x = 256 >>> y = 256 >>> x is y True   >>> x = 257 >>> y = 257 >>> x is y False

目前为止,还没有特别出乎意料的。

>>> x = -5 >>> y = -5 >>> x is y True   >>> x = -6 >>> y = -6 >>> x is y False

似乎 python 解释器使用相同例子的下限是……-5。区间 [-5, 256] 内的整数有同样的 ID。不知怎地,这变得更奇怪了。

>>> x = -10 >>> y = -10 >>> x is y False >>> x, y = [-10, -10] >>> x is y True

似乎使用解构赋值改变了这里的规则。我不确定为什么是这样。事实上,我在 Stack Overflow 上提了一个问题来试着理解它。我的猜测是,一个列表中的重复值指向同一个对象,用以节省内存。

C 中颠倒的下标符号

颠倒的下标符号,会使所有开发者都头疼。

int x[1] = { 0xdeadbeef };  printf("%xn", 0[x]); // prints deadbeef

这行得通的原因是,array[index] 确实只是 *(array + index) 的语法糖。由于加法的交换性,我们可以交换数组和索引,并得到同样的结果。

C 中的"倒数"操作符

–> 操作符***次被看到时,似乎是句法错误。在你意识到它可编译时,它看起来像未被记载的语言特性。幸运的是,两者都不是。

for (x = 3; x --> 0;) {     printf("%d ", x); // prints 2 1 0 }

–> "操作符"实际上是两个操作符,在这个背景下解析为 (x–) > 0。众所周知,大量使用会导致困惑,这完全是邪恶的。

C 中的 sizeof 操作符

sizeof 操作符是一个编译时操作符,这给予了它有趣的属性。

int x = 0; sizeof(x += 1); if (x == 0) {     printf("wtf?"); // this will be printed }

由于 sizeof 操作符的例子是对编译时进行评估的,(x += 1) 不会运行。另一件趣事是,研究表明 printf("wtf?") 是最普遍的没有被 push 的代码。

Lua、Smalltalk、MATLAB 及其他语言,索引由 1 开始

/r/programminghumor 一直在用"indexing starts at 1"表情包取乐。令人震惊的是,有大量编程语言使用从 1 开始的数组索引。可以在这里找到更全面的清单。

Ruby 中的 0 被判为 true

… and only Ruby. *

在 Ruby 中是这样。*

if 0 then print 'thanks, ruby' end # prints thanks, ruby

* edit: It was pointed out on reddit that this is true for Lua, Lisp, and Erlang as well.

* 修订:Reddit 上有人指出,这在 Lua、Lisp 和 Erlang 中也成立。

Trigraph, Digraphs, and Tokens in C

C 中的 Trigraph、Digraph 和 Token

由于历史原因,C 语言中的非字母符号有替代品。

if (true and true) { // same as if (true && true)     printf("thanks, c"); }

以上就是"Java和Python中的诡异行为实例分析"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。

操作符 行为 知识 篇文章 语言 诡异 实例 邪恶 符号 索引 实例分析 分析 相同 困惑 下标 例子 内容 区间 原因 数组 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 为想互联网科技怎么样 互联网科技未来 科技与互联网发展 互联网科技ppt模板 云创客互联网科技公司 北京三清互联网科技 顶级互联网科技成果有哪些 科技互联网大厂 湖北码尼互联网科技有限公司电话 河南猎农互联网科技有限公司 宝灵互联网科技有限公司 青岛科技大学互联网大赛研究生 深圳市优智互联网科技有限公司 健康食品互联网创新科技园项目 互联网新科技动漫ppt素材 东莞新华互联网科技学校 四川慕妮娅互联网科技有限公司 互联网科技股为什么大涨 青岛易易互联网科技 平安好医生打造互联网科技医疗 广东猪兼强互联网科技有限公司 中关村互联网 科技集团 高科技互联网 互联网与科技发展 互联网科技的 互联网科技金融公司 互联网巨头投资的硬核科技 智腾互联网科技有限公司 珠海东科互联网科技有限公司 互联网科技的前景
0