许多文本警告将char
值处理为整数是不可移植的,例如假设'A'的值为65(如ASCII)。
但是是什么决定了这个字符集是 ASCII(或扩展形式)还是其他字符集?是操作系统决定的,还是编译器决定的?我假设这不依赖于硬件。
例如,英特尔 PC 是否可以具有诸如 EBCDIC 之类的字符集(理论上)?并且更改LANG
Linux/Unix 中的环境变量是否会更改 C 程序的基本字符集的值(如果随后重新编译)?
(编辑:我现在看到 Linux 中的各种非拉丁字符集都具有相同的基本 ASCII 代码,例如KOI8-U - 我假设存在字符集与 ASCII 不兼容的变体)