编译器是否调整int大小?

时间:2014-01-12 11:53:15

标签: c++ types int

我想知道在这种情况下,compiller会将int变量大小调整到最大可能值吗?或者它会使用整个32位int?

pseudocode:

int func()
{
    if (statement)
        return 10;
    else if (statement2)
        return 50;
    else
        return 100;
}

// how much memory will be alocated as it needs only 1 byte?

4 个答案:

答案 0 :(得分:7)

该函数返回int,分配的内存为sizeof(int),无论存储在其中的实际值如何。

答案 1 :(得分:4)

我将使用完整的32位(假设此架构上的int为32位)。

它在编译时定义

答案 2 :(得分:0)

是的朋友,它将使用整个32位,因为原始类型的内存分配是在编译时完成的。

答案 3 :(得分:-1)

Int32是值类型。它在编译时存储在堆栈中。如果它在任何对象内,那么它将转到堆,这是动态内存。

在你的情况下,对于任何返回值,编译器将在堆栈上分配固定位来存储返回的整数值,根据int32的大小为32位,如果singed为0,147,483,648到2,147,483,647,则为0到0如果未签名,则为4,294,967,295。