char
在 C 中使用小整数有什么缺点吗?除了占用/内存优势之外,还有其他优势吗?
特别是,处理器在处理整数运算时是否可能比在 ( / )上char
更好或更差?long
short
int
我知道这将是特定于处理器/系统/编译器的,但我希望在一般情况下得到答案,或者至少是 32 位 Windows 和 Solaris 的一般情况,即我目前正在开发的系统. 我还假设已经处理了诸如溢出/环绕问题之类的问题。
更新:Visual Studio 6.0 实际上并没有stdint.h
Christoph 建议的那样。在 Windows(VS 6.0,调试版本,32 位)上使用少量堆栈循环进行一点基准测试可以提供类似int
的long
性能,大约是char
. 在 Linux 上运行相同的测试,使用 gcc 类似地钉int
和long
类似地,并且都比 快char
,尽管差异不那么明显。
作为旁注,我没有花太多时间寻找,但我发现(通过Wikipedia )的 VS 6.0的第一个实现stdint.h
定义为,尽管至少在我的测试中这似乎更慢。因此,正如克里斯托夫正确地建议的那样,这个故事的寓意是:永远标杆!uint_fast8_t
unsigned char