我知道C / C ++标准只保证每个字符的8位最小,理论上9 / 16/42 /其他任何东西都是可能的,因此所有关于写入的网站都是可移植的代码警告不要假设8bpc。我的问题是“非便携式”这是真的吗?
让我解释一下。我认为,有三类系统:
char
8位的任何此类系统,我会感到非常惊讶。 (如果我错了,请纠正我)char
更多是8位,但我不会感到非常惊讶,但我还没有听说过一个这样的系统(如果我不知道的话,请再次通知我)底线:是否有常见(超过0.001%)平台(上面的类别1和2),其中char
不 8位?我的上述猜测是真的吗?
答案 0 :(得分:21)
使用limits.h
CHAR_BIT
http://www.cplusplus.com/reference/clibrary/climits/
另外,当您想要使用完全给定的大小时,请使用stdint.h
答案 1 :(得分:5)
例如,许多DSP的CHAR_BIT
大于或等于16。
答案 2 :(得分:4)
至少,类似于64位架构中的整数大小,未来的平台可能会使用更多的字符,更多的位。 ASCII字符可能会过时,取而代之的是unicode。这可能是一个谨慎的原因。
答案 3 :(得分:0)
您通常可以安全地假设文件将具有8位字节,或者如果不是,则可以通过常用工具将8位字节文件转换为零填充本机格式。但是假设CHAR_BIT == 8更危险。目前几乎总是如此,但未来可能并非总是如此。 8位访问内存越来越成为瓶颈。