我知道C/C++标准只保证每个字符的最低位数为8位,理论上9/16/42/其他任何位数都是可能的。因此,在编写可移植代码的相关网站中,所有人都会警告不要假设有8位每字符(char)。我的问题是这种情况有多“不可移植”呢?
让我解释一下。在我的看法中,有三类系统:
让我解释一下。在我的看法中,有三类系统:
- 计算机 - 我指的是运行Mac/Linux/Windows/Unix/*nix/posix/任何其他操作系统的台式机、笔记本电脑、服务器等。我会很惊讶地听到任何这样的系统中char不恰好是8位的情况。(如果我错了,请纠正我)
- 带操作系统的设备 - 包括智能手机和诸如嵌入式系统之类的设备。虽然我不会对发现一个char超过8位的系统感到非常惊讶,但我目前还没有听说过这样的情况。(请再通知我一声)
- 裸机设备 - VCR、微波炉、旧手机等。在这个领域我没有任何经验,所以这里可能会出现任何情况。但是,我真的需要在我的Windows桌面和微波炉之间交叉使用我的代码吗?我有可能有共同的代码吗?
sizeof(char)
始终为1。它的大小不是以比特为单位,而是以字符为单位。 - Baruch