2024年 3月 21日

数组为什么允许-1作为下标?

C/C++/ObjC数组比较自由,数组下标仅仅代表和数组地址的偏移。偏移-1就是数组地址更小的地址。这种灵活的方式,允许从特定地址获取之前之后的地址。从数学的角度,类似数轴的正数和负数。

进一步了解
2024年 3月 20日

为什么结构体要考虑对齐?

硬件访问本身有对齐的要求。以intel 32位处理器为例,每次数据总线访问32位数据,只有以4字节对齐才符合硬件访问行为。如不对齐,就会出现CPU多次访问的问题。 尽管编译器或硬件有对齐的需求,有时也...

进一步了解
2024年 3月 20日

三字符组是什么来源?

早期计算机键盘,有的并不支持全部的ASCII码。例如字符|, 就需要用已有的按键代表,即三字符组的来源。例如printf(“??!”)可以输出 | . 即??!三个字符代替|, 当然,现代大部分键盘都...

进一步了解
2024年 3月 20日

编程语言支持中文变量吗?

早期编程语言因为字符集限制,大部分编程语言都只支持ASCII码。随着字符集不断扩展,系统内存足够大,编程语言限制字符集没有什么意义了。目前大部分主流编程语言都支持中文字符集,可以用中文命名变量。例如 ...

进一步了解
2024年 3月 20日

为什么不支持嵌套注释?

既然是块注释,就没必要再里面继续嵌套注释了,因为都是注释,支持嵌套没有任何意义。从编译器实现看,词法分析就会处理注释,简单的发现/*作为注释起始符,一直忽略至*/是最简单的实现。 不支持嵌套注释 /*...

进一步了解
2024年 3月 20日

PL/I语言的起源

在20世纪50~60年代,当时主流的编程语言是COBOL/FORTRAN/ALGOL等,IBM想要设计一门通用的编程语言,已有的编程语言无法实现此要求,故想要设计一门新语言,即是PL/I. PL/I是...

进一步了解