struct vs int64值

时间:2012-05-10 20:11:27

标签: c++ 32bit-64bit

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

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

struct {
    int id1;
    int id2;
};

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

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

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

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:2)

没有理由不使用结构。

答案 2 :(得分:1)

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

Microsoft例如定义了LARGE_INTEGER union