#include <iostream>
using namespace std;
int main()
{
int a = 1;
cout << sizeof(a = 3) << endl;
cout << a << endl;
return 0;
}
输出为4,1,而不是4,3
由输出可以知道,a 的值未被改变,也就是a = 3并未被执行。
原因就在于,C++中的sizeof()是一个宏,在编译阶段处理。由于sizeof不能被翻译成机器码,所以sizeof的作用范围内,也就是()里面的表达式不能被编译,而是被替换为类型,赋值操作符(=)返回左操作数的类型,所以 a=3在sizeof()看来就相当于int。