分类:
2008-10-13 16:34:07
if(sizeof(int)==4)
{
typedef short INT16;
}
else
{
typedef int INT16;
}
sizeof(INT16) = ?
我一看问题,心中马上就想到:2。但是仔细想想,应该不会这么简单的,又想到可能与硬件有关,于是我回答:硬件不同结果不同。当时就想写段代码来证实(证实结果为2),咳,还没等自己想出来,周星星就贴出来了
template<size_t N> class Fuck
{
};
template<> class Fuck<2>
{
public:
typedef int _INT16;
};
template<> class Fuck<4>
{
public:
typedef short _INT16;
};
typedef Fuck<sizeof(int)>::_INT16 INT16;
(本人郑重声明:上面的不是我写的,请大家不要误会)
经过验证,结果为 2。
下面是整个的可以编译的程序
template<size_t N> class Fuck
{
};
template<> class Fuck<2>
{
public:
typedef int _INT16;
};
template<> class Fuck<4>
{
public:
typedef short _INT16;
};
typedef Fuck<sizeof(int)>::_INT16 INT16;
int main(int argc, char* argv[])
{
INT16 i = (INT16)0;
int n = sizeof(i);
printf("sizeof(INT16)=%d, sizeof(i)=%d\n", sizeof(INT16), n);
return 0;
}
咳,高手就是高手,我自己咋就没有想到呢?自己的基本功夫还是不扎实,没有过关啊