Chinaunix首页 | 论坛 | 博客
  • 博客访问: 381384
  • 博文数量: 715
  • 博客积分: 40000
  • 博客等级: 大将
  • 技术积分: 5005
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 14:46
文章分类

全部博文(715)

文章存档

2011年(1)

2008年(714)

我的朋友

分类:

2008-10-13 16:34:07

今天翻看了自己的临时工程,偶然看到一段代码,于是想起了前段时间,在VCKASE上有人问一个问题,大致如下:

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;

}

咳,高手就是高手,我自己咋就没有想到呢?自己的基本功夫还是不扎实,没有过关啊


--------------------next---------------------

阅读(221) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~