我正在阅读关于C ++的一些材料,它说代表某人的年龄,int16_t优于uint8_t,即使int16_t的范围是-32,768到32,767而uint8_t的范围是0到255。
一个人的年龄永远不会消极,那么为什么int16_t是更好的选择呢?
答案 0 :(得分:1)
这种选择可能有几个原因。
例如,如果您的程序将出生日期与当前日期进行比较,那么如果您的程序使用时间过长,最终会遇到uint8_t
将溢出的情况。
如果此人已死亡或年龄无效,您可能希望设置一个负数作为错误形式,-1
表示未设置,-2
表示死亡,{{1}超出范围等等。
在某些平台上-3
会在打印时将cout
视为uint8_t
,从而导致混淆输出给那些不期望它的人。 (@ M.M指出了这一点,More Info)
这种方法还允许您在允许负数/更大值时更灵活。基本上在一般情况下,内存非常便宜,特别是在处理8位时 编写具有较少溢出机会的代码并且更加灵活,而不是担心将更多数据打包到更小的空间中,这样做会更好。
答案 1 :(得分:0)
除非你的芯片组是16位芯片,否则不应该使用int_16而不是uint_8t,其中16位操作比8位操作更有效,尽管现在大多数人都不会使用16位芯片,即使在嵌入式系统编程中也是如此