
Java
long 的长度确实不是完全由编译器决定的吗?这难道不是学 C 语言时绕不开的一个坑点吗?C 语言设计的时候本质上只是为了简化汇编代码的书写,像 int、long 这些类型,并没有明确规定到底对应多少位,而是交由编译器自行决定。而 C 是重新设计的语言,明确了字长,这有什么问题?再说,C 本来就是在 Java 的基础上发展起来的,Java 这样设计又有什么好奇怪的?实际上,在 Java 出现之前,程序员早已被 long、long long、int 等模糊的类型定义搞得焦头烂额。那时候就已经有人开始避免使用 short、int、long 这些不明确的类型,转而使用更清晰的 word、Dword、Qword,以及后来更加精确的 int32_t 等类型标识符。这个问题的根本原因在于 C/C++ 的设计缺陷:结合 .h 和 .hpp 文件的源码分发机制,再加上 C 语言本身没有对类型关键字的字长做出明确规范,从而带来了历史遗留问题。除了 C/C++,几乎很少有其他语言存在这种困扰。在 C 中,long 其实并不是一个独立的类型,它只是 System.Int64 的别名而已。你当然可以通过某些手段修改编译器行为,让 long 被解释为 System.Int32,但由于 C 和 Java 不需要 .h 文件,即使你做了这样的改动,当你的程序集被别人引用时,别人看到的仍然是 int 类型……Copyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号