1

假设这是针对 32 位应用程序的。我有两个 ID 值,它们共同唯一标识特定对象。每个 ID 都是一个普通的 32 位 int,因此为了识别任何特定对象,我需要将两个 ID 值放在一起。

想到的第一个解决方案是将它们存储为两个单独的值,并在结构中传递它们:

struct {
    int id1;
    int id2;
};

但是,如果我可以将它们作为单个值而不是结构对传递,那就太好了,就像我在只有一个 32 位 ID 值时所做的那样。

因此,另一个想法是将它们存储为 uint64_t 的上半部分和下半部分。

我的问题是,这两种方法有什么真正的区别吗?无论哪种方式,都在传递相同数量的字节,但我不知道 int64 是否有任何特殊开销,因为 CPU 本身并不处理 64 位值。

4

3 回答 3

5

最佳处理取决于实体的处理方式。如果通常/大部分是将两个子字段作为一个单元进行比较,则 int64 有效。如果它经常独立检查子字段,那么结构更自然。

于 2012-05-10T20:18:16.323 回答
2

没有理由不使用该结构。

于 2012-05-10T20:14:05.310 回答
1

如果您无法下定决心,请使用工会。

例如,微软定义了一个LARGE_INTEGERunion

于 2012-05-10T20:22:53.487 回答