2.1-sizeof再探

2020-05-04  本文已影响0人  李伟13

可使用如下两个宏定义来实现sizeof功能
(宏为预编译)

//针对T为一个类型名的情况
#define _sizeof_type(T) (size_t)((T*)0 + 1)
//针对T为一个变量或者数组名的情况
#define _sizeof(T) ((size_t)(&T + 1) - (size_t)(&T))


int a = 0;
cout<< sizeof(a=3) <<endl;
cout<< a <<endl;

结果为 4,  3

由于sizeof不能被编译成机器码,所以sizeof作用范围内,也就是()里面的内容也不能被编译,而是被替换成类型。=操作符返回左操作数的类型,所以a=3相当于int.

上一篇 下一篇

猜你喜欢

热点阅读