深入理解 C/C++ sizeof() 运算符

过去有一段时间一直以为带个括号的 sizeof() 是 C/C++ 的原生函数QAQ。

其实不然,sizeof 同位运算符(^|&~!)一样是一种单目运算符,作用于变量或数组。

在编译时编译器就会把 sizeof() 的内容转换成常数存入机器码中,不涉及函数的底层操作。

用途

sizeof 运算符可用于获取类、结构、共用体和其他用户自定义数据类型的大小。

使用 sizeof 的语法如下:

sizeof (data type)

其中,data type 是要计算大小的数据类型,包括类、结构、共用体和其他用户自定义数据类型。

sizeof 与 普通变量

#include<bits/stdc++.h>
using namespace std;
int main() {
    char char_var;
    float float_var;
    double double_var;
    long double ldouble_var;
    int int_var;
    long long ll_var;

    printf("sizeof char = %d\n",sizeof(char_var));
    printf("sizeof float = %d\n",sizeof(float_var));
    printf("sizeof double = %d\n",sizeof(double_var));
    printf("sizeof long double = %d\n",sizeof(ldouble_var));
    printf("sizeof int = %d\n",sizeof(int_var));
    printf("sizeof long long = %d\n",sizeof(ll_var));   
    return 0;
} 

输出结果:

sizeof char = 1
sizeof float = 4
sizeof double = 8
sizeof long double = 16
sizeof int = 4
sizeof long long = 8

可以看出,编译器把 sizeof 的内容都替换成了变量占用的空间大小(单位为字节)。

此外,作为一个运算符,在 sizeof 之后的变量名可以不用括号括起来,这样在概念上就不会和函数混淆了。

猜你喜欢

转载自www.cnblogs.com/zhwer/p/12294903.html