如果iOS是32位的操作系统,我们如何使用uint64_t和int64_t?

它似乎工作正常,但我认为可以存储在内存中的最多是32位整数?

现在我很困惑,它有什么不同。

谢谢!

区别不在于您有64位数据types可供使用。 区别在于可用内存地址空间的大小以及指向内存的指针大小。 在一个32位的操作系统中,你有2 ^ 32个字节的可寻址内存空间,而你需要32位指针来覆盖这一切。 在64位操作系统中,您有2 ^ 64个字节的内存空间来寻址,因此指针必须是64位。

在硬件级别上,内部64位数据types可能在64位硬件上更为优化,因为将会有64位寄存器和指令来处理它们。 否则,编译器/运行时库将在32位硬件上做更多的工作来支持/模拟64位操作。

我认为其他答案没有正确解释这一点。

uint64_t和int64_t是C语言数据types ,不是硬件数据types。 编译器会尽一切努力使这些types成为64位无符号或有符号整数。 如果硬件提供了64位寄存器和整型运算,那么它就会很好,编译器会直接使用这些运算。 如果硬件只有32位寄存器(或16位或8位),则编译器和运行时系统使用软件仿真来完成工作。