为什么uint_8t不建议代表某人的年龄?

时间:2016-04-25 23:25:11

标签: c++

我正在阅读关于C ++的一些材料,它说代表某人的年龄,int16_t优于uint8_t,即使int16_t的范围是-32,768到32,767而uint8_t的范围是0到255。

一个人的年龄永远不会消极,那么为什么int16_t是更好的选择呢?

2 个答案:

答案 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位芯片,即使在嵌入式系统编程中也是如此