程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 普通C++程序員 VS 文藝C++程序員

普通C++程序員 VS 文藝C++程序員

編輯:C++入門知識

BBS上看到一個講C++的帖子, C++ 這孩子 是不是誤入歧途了?,讓我想起了普通青年和文藝青年。 

看這個經典的NB 程序,求一個數有多少bit 。

普通C++ 程序員

namespace traditional  
 
{  
 
int bits_of(int remain)  
 
{  
 
if (remain)  
 
return 1+bits_of( remain>>1 );  
 
return 0;  
 
}  
 
 
int bits_of(void)  
 
{  
 
return bits_of(~(int)0);  
 
}  
 
}  
 
文藝C++ 程序員

namespace modern  
 
{  
 
template<int,typename THEN, typename ELSE>  
 
struct IF { typedefTHEN type; };  
 
 
template<typename THEN, typename ELSE>  
 
struct IF<0,THEN,ELSE> { typedef ELSE type; };  
 
 
template<typename T, T X>  
 
struct zero  
 
{  
 
static const Tvalue = X;  
 
};  
 
 
template<typename T, T X>  
 
struct bits_of  
 
{  
 
typedef typenameIF<X, bits_of<T,(X>>1)>, zero<T,0> >::type type;  
 
static const Tvalue = type::value + !!X;  
 
};  
 

還有文青的unit test,

typedef int a0[bits_of<int,0>::value==0? 1: -1]; 
typedef int a1[bits_of<int,1>::value==1? 1: -1]; 
typedef int a2[bits_of<int,2>::value==2? 1: -1]; 
typedef int a3[bits_of<int,3>::value==2? 1: -1]; 
typedef int a4[bits_of<int,4>::value==3? 1: -1]; 
typedef int a7[bits_of<int,7>::value==3? 1: -1]; 
typedef int a8[bits_of<int,8>::value==4? 1: -1]; 
typedef int a15[bits_of<int,15>::value==4? 1: -1]; 
typedef int a16[bits_of<int,16>::value==5? 1: -1];   
第三類C++ 程序員

namespace third_party  
 
{  
 
// 您確定您能看懂?    
 
}  


 摘自 Viper的專欄
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved