我正在阅读一些关于 C++ 的 Material ,它说为了表示某人的年龄,int16_t 优于 uint8_t,即使 int16_t 的范围是 -32,768 到 32,767 而 uint8_t 的范围是 0 到 255。
一个人的年龄永远不会是负数,那么为什么 int16_t 是更好的选择呢?
最佳答案
做出这种选择可能有几个原因。
例如,如果您的程序将出生日期与当前日期进行比较,您最终会遇到这样的情况:如果您的程序使用时间足够长,uint8_t
将溢出。
或者如果这个人已经死了,或者有一个无效的年龄,你可能希望设置一个负数作为一种错误形式,-1
表示没有设置,-2
死机,-3
超出范围等
在某些平台上,cout
会在打印时将 uint8_t
视为 char
,从而导致那些不希望看到它的人产生混淆的输出。 (@M.M 指出了这一点,More Info)
这种方法还允许您更灵活地使用负数/更大的值。基本上在一般情况下内存非常小,特别是在处理 8 位时。
编写溢出可能性较小且更灵活的代码比担心将更多数据打包到更小的空间要好。
关于c++ - 为什么不推荐使用 uint8_t 来表示某人的年龄?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36852816/