我想知道在这种情况下,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?
答案 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。