C99中的stdint.h提供了许多整数大小、类型和范围的选项 - 太多了,我不知道该选择哪个!
我知道如何在适当的时候使用size_t
和ptrdiff_t
,并且我使用固定大小的类型进行存储和传输。我的问题涉及仅将值存储在主机内存中的情况。
例如,一个用于图像的结构可能包含以下成员:
struct image {
integer width, height; /* pixel dimensions of the image */
integer bits_per_pixel;
...
};
如果
width
和height
永远不会超过SHRT_MAX
,是应该使用short
还是继续使用int
?图像的宽度或高度不能为负数,因此使用无符号类型?也许(u)int_least16_t
是正确的选择?还是其他什么?如果
bits_per_pixel
永远不会超过64,应该使用char
、unsigned char
、uint8_t
、int
或其他什么?在这个例子中你会使用什么,为什么?
CPU架构如何影响代码运行时的选择?例如PPC或x86,32位或64位。
设备如何影响代码运行时的选择?例如桌面、手机、控制台。
选择与性能和优化有何关系?
简单地说,我的问题是:如何选择要使用的整数类型?