为什么int和C中的int一样长?

时间:2018-12-14 10:21:46

标签: c int long-integer

也许更好的问题是,当我的编译器告诉我sizeof(int) = sizeof(long) = 4个字节时,long可能存储比整数大的数字吗?我不能把头缠起来...为什么不会溢出?需要更大数量时是否在运行时进行了调整?

1 个答案:

答案 0 :(得分:2)

根据this

标准规定int至少为 16位,而long至少为32位。因此,根据实现的不同,它们的大小可能相同(它们都可以是32位),或者大小也可能不同。这意味着,如果为这些数据类型的大小做出假设,则为两个不同环境编译的同一程序可能会表现出不同的行为。

  

为什么不会出现溢出?在运行时是否进行了调整?   是否需要更大的数量?

例如,如果您添加两个整数并将结果存储在long中,则如果longint的大小相同,则确实可能会发生溢出。这是那些类型没有保证大小的问题。如果需要这种保证,请改用int32_tint64_t之类的类型,这些类型分别保证为32位和64位。

相关问题