编译器是否调整整数大小

Does compiler adjust int size?

本文关键字:整数 调整 是否 编译器      更新时间:2023-10-16

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

返回int,分配的内存将被sizeof(int),而不管其中存储的实际值如何。

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

它是在编译时定义的

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

Int32 是值类型。它在编译时存储在堆栈上。如果它在任何对象内部,那么它将进入动态内存堆。

在您的情况下,对于任何返回值,编译器将根据 int32 的大小(即 32 位)在堆栈上分配固定位来存储返回整数值,如果已唱片,其范围可以是 –2,147,483,648 到 2,147,483,647,如果无符号,则为 0 到 4,294,967,295。