【发布时间】:2013-03-06 15:13:43
【问题描述】:
许多文本警告将char 值作为整数处理是不可移植的,例如假设 'A' 的值为 65(如 ASCII)。
但是是什么决定了这个字符集是 ASCII(或扩展形式)还是其他字符集?是操作系统决定的,还是编译器决定的?我假设这不依赖于硬件。
例如,Intel PC 是否可以具有诸如 EBCDIC 之类的字符集(理论上)?在 Linux/Unix 中更改 LANG 环境变量是否会更改 C 程序的基本字符集的值(如果随后重新编译)?
(编辑:我现在看到 Linux 中的各种非拉丁字符集都具有相同的基本 ASCII 代码,例如 KOI8-U - 我假设存在与 ASCII 不兼容的字符集的变体)
【问题讨论】:
-
我认为这是实现定义的。
-
编译器决定。当然,一些决定会使其这样的编译器变得不那么有用。
-
当然,任何事情都可能发生。真正的问题是,会这会发生吗。