下面的C++ 代码输出什么?为什么?

时间:2022-04-29 09:29:51
#include <iostream>

using namespace std;
class cl
{
    int x;
};
int main()
{
    cl first;
    cout<<sizeof(first)<<endl;
    return 0;
}

8 个解决方案

#1


输出  4  

sizeof是用来求数据类型或变量所占的字节数的,因为类cl就一个成员变量,为int型,int型在32位机以上运行环境,占4个字节,所以类cl占4个字节,即实例出的对象也占4个字节

#2


楼上正解,我再补充一点,用sizeof测结构体长度,必定是4的倍数。
比如你加个成员变量char c 在结构体中,结果为8

#3


引用 2 楼 嘻哈老怪的回复:
楼上正解,我再补充一点,用sizeof测结构体长度,必定是4的倍数。
比如你加个成员变量char c 在结构体中,结果为8

楼上正解,我再补充一点,用sizeof测结构体长度,必定是4的倍数。
比如你加个成员变量char c 在结构体中,结果为8
不一定都是4的倍数吧,试试不同编译器里只往结构体里放一个char

#4


引用 2 楼 u012803916 的回复:
楼上正解,我再补充一点,用sizeof测结构体长度,必定是4的倍数。
比如你加个成员变量char c 在结构体中,结果为8


说得不严谨,测测一下几种结构体长度就知道是不是必定是4的倍数了:
class ci
{
char c;
};


class ci
{
short int a;
};


#pragma pack(1)
class ci
{
short int a;
char c;
};
#pragma pack()


#pragma pack(1)
class ci
{
int a;
char c;
};
#pragma pack()

#5


你的这个类是一个POD(Plain Old Data),同时只有一个元素, 所以大小是4

#6


int通常都是4, 结构体大小跟对齐方式相关

#7


类的对象占用的内存包插成员函数的形参和内存和成员变量的内存。
因为cl中只有一个成员函数 int x, 在32位系统中,int占用4个字节。
所以这里的输出值为4
class cl
 {
     int x;
 };

#8


类的对象占用的内存包括成员函数的形参的内存和成员变量的内存。
 因为cl中只有一个成员函数 int x, 在32位系统中,int占用4个字节。
 所以这里的输出值为4
 class cl
  {
      int x;
  };

#1


输出  4  

sizeof是用来求数据类型或变量所占的字节数的,因为类cl就一个成员变量,为int型,int型在32位机以上运行环境,占4个字节,所以类cl占4个字节,即实例出的对象也占4个字节

#2


楼上正解,我再补充一点,用sizeof测结构体长度,必定是4的倍数。
比如你加个成员变量char c 在结构体中,结果为8

#3


引用 2 楼 嘻哈老怪的回复:
楼上正解,我再补充一点,用sizeof测结构体长度,必定是4的倍数。
比如你加个成员变量char c 在结构体中,结果为8

楼上正解,我再补充一点,用sizeof测结构体长度,必定是4的倍数。
比如你加个成员变量char c 在结构体中,结果为8
不一定都是4的倍数吧,试试不同编译器里只往结构体里放一个char

#4


引用 2 楼 u012803916 的回复:
楼上正解,我再补充一点,用sizeof测结构体长度,必定是4的倍数。
比如你加个成员变量char c 在结构体中,结果为8


说得不严谨,测测一下几种结构体长度就知道是不是必定是4的倍数了:
class ci
{
char c;
};


class ci
{
short int a;
};


#pragma pack(1)
class ci
{
short int a;
char c;
};
#pragma pack()


#pragma pack(1)
class ci
{
int a;
char c;
};
#pragma pack()

#5


你的这个类是一个POD(Plain Old Data),同时只有一个元素, 所以大小是4

#6


int通常都是4, 结构体大小跟对齐方式相关

#7


类的对象占用的内存包插成员函数的形参和内存和成员变量的内存。
因为cl中只有一个成员函数 int x, 在32位系统中,int占用4个字节。
所以这里的输出值为4
class cl
 {
     int x;
 };

#8


类的对象占用的内存包括成员函数的形参的内存和成员变量的内存。
 因为cl中只有一个成员函数 int x, 在32位系统中,int占用4个字节。
 所以这里的输出值为4
 class cl
  {
      int x;
  };