首页 > 试题广场 >

在32位计算机中,下面变量的大小是( ) typ...

[单选题]

32位计算机中,下面输出是多少(

#include <iostream>
using namespace std;
typedef enum
{
	Char ,
	Short,
	Int,
	Double,
	Float,
}TEST_TYPE;
int main() {
	TEST_TYPE val;
	cout<< sizeof(val)<<endl;
        return 0;
}

  • 5
  • 4
  • 8
  • 12
这里的陷阱是 枚举列表里的char, int, float 都只是枚举变量名,实际上系统默认给枚举类型的都会隐式的转为int值,所以会输出4. 如果改一下代码, 
TEST_TYPE val = Double; 
cout<<sizeof(val)<<endl<<val<<endl;
会输出4(即枚举类型int的字节数)和 3 (val本身的值,因为赋值从0开始,Float是3)
发表于 2018-10-06 19:40:56 回复(2)
 struct结构体变量大小等于结构体中的各个成员变量所占内存大小总和,union共用体变量大小等于共用体结构中占用内存最大的成员的内存大小。

首先先明白概念:
数据类型,指固定内存大小的别名,如int类型为4个字节内存。
变量,一段连续存储空间的别名。这段连续存储空间的大小,即变量的大小,由定义该变量的数据类型决定,即该数据类型代表的固定内存大小。数据类型,是变量的模板。

应用到枚举上:
枚举类型,指一个被命名的整型常数的集合。即枚举类型,本质上是一组常数的集合体,只是这些常数有各自的命名。枚举类型,是一种用户自定义数据类型。
枚举变量,由枚举类型定义的变量。枚举变量的大小,即枚举类型所占内存的大小。由于枚举变量的赋值,一次只能存放枚举结构中的某个常数。所以枚举变量的大小,实质是常数所占内存空间的大小(常数为int类型,当前主流的编译器中一般是32位机器和64位机器中int型都是4个字节),枚举类型所占内存大小也是这样。
另外,可以用编译器内置的指示符sizeof,计算出枚举变量(或枚举类型)的大小进行验证。
发表于 2018-09-14 11:13:11 回复(0)
枚举类型,本质上是一组常数的集合体,由于枚举变量的赋值,一次只能存放枚举结构中的某个常数。所以枚举变量的大小,实质是常数所占内存空间的大小(常数为int类型,当前主流的编译器中一般是32位机器和64位机器中int型都是4个字节)
发表于 2017-12-08 09:39:17 回复(0)
玩的障眼法,这是个enum不是结构体,你一旦开始数就输了
typedef enum
{
    Blue,
    Red,
    Yellow,
    Green,
    Black,
}TEST_TYPE;
改成这样就舒服多了

编辑于 2022-05-26 10:56:29 回复(0)
枚举类型默认为int变量,所以为4
发表于 2020-10-21 18:17:52 回复(0)
枚举变量默认为int型,4
编辑于 2024-03-18 16:25:33 回复(0)
百度百科 1.枚举值是常量,不是变量。 2. 枚举元素本身由系统定义了一个表示序号的数值,从0开始顺序定义为0,1,2…。如在weekday中,sun值为0,mon值为1,sat值为6。 所以char,short这些枚举值其实对应的是0,1... 而且我们只能把枚举值赋予枚举变量,不能把元素的数值直接赋予枚举变量,除非用强制类型转换
发表于 2022-07-07 23:26:10 回复(0)