代码之家  ›  专栏  ›  技术社区  ›  Finglas

使用byte/short等的任何原因。在C?

  •  7
  • Finglas  · 技术社区  · 15 年前

    在int类型上?

    很多代码要么使用int和double/float。

    我知道有类似于.NET移动版的版本,所以byte/short有自己的版本,但是对于桌面应用程序来说,有什么意义吗?

    当我做C++工作(游戏编程)时,我非常清楚我使用的每种数据类型,虽然我在C/J/Java工作中没有这种感觉。

    如果我知道循环永远不会超过字节的界限,那么使用字节会有什么好处吗?

    5 回复  |  直到 15 年前
        1
  •  10
  •   Anton Gogolev    15 年前

    单一的 byte 与A相比 long 在内存方面不会产生巨大的差异,但是当您开始使用大型数组时,这7个额外的字节将产生很大的差异。

    更重要的是,数据类型有助于更好地传达开发人员的意图:当您遇到 byte length; 你肯定知道 length 的范围是 字节 .

        2
  •  8
  •   cletus    15 年前

    我认为这个问题得到的是,10多年前,考虑变量需要存储的值是一种常见的做法,例如,如果您存储的是百分比(0..100),那么您可能会使用一个字节(128到127个有符号或0到255个无符号),因为它对于作业来说足够大,因此被视为较少的“浪费”。

    但这些天,这些措施是不必要的。内存通常不是那么贵,如果是这样的话,你很可能会被现代计算机打败,不管怎么说,都是在32位字边界(如果不是64位的话)上对齐东西。

    除非您要存储数千个这样的东西的数组,否则这些微优化(现在)是一个无关的干扰。

    坦白地说,我记不起上次我没有用字节来表示原始数据以外的内容,我也记不起上次我用了一个缩写来表示什么。

        3
  •  4
  •   Dave Van den Eynde    15 年前

    当使用小于CPU本机字大小的数据类型时,性能损失很小。当CPU需要将两个字节加在一起时,它将它们加载到(32位)字大小的寄存器中,添加它们,调整它们(切断三个最重要的字节,计算进位/溢出),并将它们存储回一个字节。

    这是很多工作。如果要在循环中使用变量,请不要使其小于CPU的本机字。

    这些数据类型的存在使代码能够处理包含这些数据类型的结构,这是因为大小约束,或者是因为遗留的API或其他原因。

        4
  •  3
  •   Marc Gravell    15 年前

    太多了 使用原因 byte -任何处理原始二进制流(图像、文件、序列化代码等)的东西都必须在 byte[] 缓冲器。

    我不会用 字节 不过,就像计数器一样,CPU可以处理 int 更有效。

    short …当你有一个 数组 其中可能会节省很多空间,但一般来说,我只会使用 int .

        5
  •  3
  •   John Feminella    15 年前

    这是一个“为工作使用正确的工具”的案例。如果使用的是表示字节的内容,则使用 byte 数据类型。例如,许多涉及字节流的代码都需要使用字节数组。相反,如果您只是处理任意整数,则使用 int long 如果它们大于 int 可以处理。