选择最适合用于变量的整数大小/范围
C99中的
stdint.h为整数大小,类型和范围提供了许多选项 – 这么多我不知道选择什么!
我知道how to use 例如,图像的结构可能包含以下成员: struct image { integer width,height; /* pixel dimensions of the image */ integer bits_per_pixel; ... }; 如果宽度和高度永远不会超过SHRT_MAX,应该使用short还是坚持使用int?图像不能具有负宽度或高度,因此使用无符号类型?也许(你)int_least16_t是正确的选择?别的什么? 如果bits_per_pixel永远不会超过64的值,请使用char,unsigned char,uint8_t,int或其他什么? 你会在这个例子中使用什么?为什么? 代码运行的CPU架构如何影响选择?即PPC或x86,32或64位. 我的问题简单来说就是:你如何选择使用哪个整数? 解决方法
我会说:不要太担心这一点,它往往是一种过早优化的形式.但我的经验法则是:
>尽可能使用plain int.它应该是机器的自然字大小.>当您需要明确定义的整数溢出时,请使用无符号类型.>当需要二进制补码表示时,使用(u)intX_t类型.>对值为< = UCHAR_MAX的大型数组使用unsigned char. 请注意< stdint.h>中的很多类型是可选的,所以你不能依赖它们的存在. POSIX使这稍微好一些. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |