? 1、什么是sizeof
让我们先来看看sizeof在msdn中的定义:
thesizeofkeywordgivestheamountofstorage,in bytes,associatedwithavariableoratype (includingagggregatetypes ).thiskeywordred
看到return这个词,想到函数了吗? 错了。 sizeof不是函数。 你见过没有括号就把参数传递给函数吗? 因为可以sizeof,所以sizeof不是函数。 网上说sizeof是一元操作器,但我不这么认为。 因为sizeof就像在编译阶段评估的特殊宏。 举个例子:
出局了
出局了
在编译阶段,翻译如下。
cout4
cout1
这里有陷阱。 请看下面的步骤。
int a=0;
出局了
出局了
为什么输出是4,0而不是预期的4,3? 处于sizeof在编译阶段处理的特性。 因为sizeof不能编译成机器码,所以sizeof作用的范围内,也就是()的内容也不能编译,而是被类型代替。=因为操作符返回左操作数的类型,所以a=3相当于int,代码也替换为:
int a=0;
cout4
出局了