c++ - 为什么不推荐使用 uint8_t 来表示某人的年龄?

标签 c++

我正在阅读一些关于 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/

相关文章:

c++ - 示例文件中的 CImg 图像加载错误

c# - 链表的应用 C++ vs C#

c++ - 特殊双向关联

c++ - CMake:为什么 added_subdirectory 对其他子目录不可见

c++ - C/C++ 中的并发日志文件访问

c++ - 为什么当您尝试使用 arr = {values} 为数组赋值时会发生错误?

c++ - 为什么这个数组的 sizeof() 是非法的?

c++ - 如何使用指针从其他函数访问局部变量?

c++ - float 和整数歧义

c++ - 需要解释一个演示重载函数的简单 C++ 程序中的编译错误