Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 编译器是否调整整型大小?_C++_Types_Int - Fatal编程技术网

C++ 编译器是否调整整型大小?

C++ 编译器是否调整整型大小?,c++,types,int,C++,Types,Int,我想知道在这种情况下,编译器是否会将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变量大小调整到其最大可能值?或者它将使用整个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?

我将使用完整的32位(假设在这个架构中int是32位)


它是在编译时定义的

我将使用完整的32位(假设在这个体系结构中int是32位)


它是在编译时定义的。

函数返回
int
,分配的内存将是
sizeof(int)
,而不考虑其中存储的实际值。

函数返回
int
,分配的内存将是
sizeof(int)
,无论存储在其中的实际值是多少。

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

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

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


在您的情况下,对于任何返回值,编译器将根据int32的大小(即32位)在堆栈上分配固定位来存储您的返回整数值,该值的范围为–2147483648到2147483647(如果已签名),0到4294967295(如果未签名)。

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


在您的情况下,对于任何返回值,编译器都会在堆栈上分配固定位来存储您的返回整数值,根据int32的大小,即32位,如果已签名,则范围为–2147483648到2147483647,如果未签名,则范围为0到4294967295。

所需的内存取决于函数结果的使用位置。
int
使用实现定义的固定字节长度(通常为4)。@OliCharlesworth因此,如果我将其指定为short(short I=func())它会先放大整数大小,然后把它改短?或者它只是一个较短的大小?@user2843974,前者,但您必须意识到寄存器中的内容无论如何都比
short
大。所需的内存取决于函数结果的使用位置。
int
使用实现定义的固定字节长度(通常为4)@OliCharlesworth所以如果我将其分配给short(short I=func()),它将计算int size,然后将其转换为short?或者它只会显示较短的大小?@user2843974,前者,但您必须意识到寄存器中的内容无论如何都比
short
要大。@user2843974您可以使用sizeOf交叉检查这一点opertaor@user2843974您可以首先使用sizeOf operator进行交叉检查,它是
sizeOf
,而不是
sizof
;第二,你所说的是“一个整数的大小就是一个整数的大小”,我几乎不认为这有用。首先,它是
sizeof
,而不是
sizof
;第二,你所说的只是“一个整数的大小就是一个整数的大小”,我几乎不认为这是有用的。