ogz*_*ylz 54 c++ runtime sizeof compile-time
例如,此代码段的结果取决于哪台机器:编译器机器或机器可执行文件有效?
sizeof(short int)
Run Code Online (Sandbox Code Playgroud)
Bil*_*eal 59
sizeof 是一个编译时运算符.
从C99开始,当且仅当操作数是可变长度数组(例如int a [b],其中b在编译时未知)时,才在运行时评估sizeof。在这种情况下,将在运行时对sizeof(a)进行评估,其结果是整个数组的大小(以字节为单位),即数组中所有元素的大小相加。要获取数组中的元素数,请使用sizeof(a) / sizeof(b)。根据C99标准:
sizeof运算符产生其操作数的大小(以字节为单位),该操作数可以是表达式或类型的括号名称。大小由操作数的类型确定。结果是一个整数。如果操作数的类型是可变长度数组类型,则对操作数求值;否则,不评估操作数,结果为整数常量。
请注意,所有这些都与在堆上分配数组(例如)时得到的结果不同int* a = new int[b]。在这种情况下,无论数组中有多少个元素,sizeof(a)都只会为您提供一个指向int的指针的大小,即4或8个字节。