0
点赞
收藏
分享

微信扫一扫

C++自学06:sizeof运算符


sizeof是一个单目运算符,优先级为2,它的用途是:由于数据类型随系统运行环境可能导致不同,因此要知道一个变量在所有情况下的大小是很困难的,所以C定义了编译时运算符,sizeof

sizeof(操作数);

1.若操作数是char,unsigned char ,signed char,则返回值一定是1,因为ANSI C规定字符类型就是1个字节,下面三种写法都会打印出1

printf("%d", sizeof(char));
printf("%d", sizeof(unsigned char));
printf("%d", sizeof(signed char));

2.除了1中的类型之外,其他的类型ANSI C没有规定,所以返回值依赖于具体的实现

3.当操作数是指针时,sizeof依赖于具体的编译器
4.当操作数是数组时,返回值是数组占用的总内存字节数,下面示例会打印出16

int a[] = {1,2,3,4};
printf("%d", sizeof(a));

5.当操作数是联合类型,则返回该联合体内最大的那个成员类型所占用的字节数,下面的示例会打印出8

union MyUnion
{
int a;
double b;
char c;
};
MyUnion ys;
printf("%d",sizeof(ys));

6.当操作数是结构体时,则返回的是该结构体所有成员类型+不同编译器考虑对齐的情况,也就是说,最终还是取决于不同的编译器,例如下面的代码在我的visual studio 2017下打印出8

struct MyStruct
{
char a[3];
int b;
};
MyStruct ys;
printf("%d",sizeof(ys));

总结:总体来说,sizeof会返回操作数所占了内存多少个字节


举报

相关推荐

C++ sizeof 运算符

C++ 运算符

06C++之运算符

java自学-运算符

c++赋值运算符

C++运算符重载

0 条评论