程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 利用模板編譯期計算階乘

利用模板編譯期計算階乘

編輯:C++入門知識

////////////////////////////////////////////////////////////////////////// // C++ templates meta programming     template<bool, typename T1, typename T2> struct If { typedef T1 type; };     template<typename T1, typename T2> struct If<false, typename T1, typename T2> { typedef T2 type; };     template<int n> struct Factorial_exception { enum {Value = -1}; };     template<int n> struct _Factorial { enum { Value=n*_Factorial<n-1>::Value}; };     template<> struct _Factorial<0> { enum { Value=1}; };     // 最終結果 template<int n> struct Factorial { enum { Value = If< n<1, Factorial_exception<n>/*小於1時階乘為-1 */, _Factorial<n> >::type::Value }; };     使用例舉: int i = Factorial<-2>::Value; // 該語句對應編譯之後的匯編代碼為: mov dword ptr [i],0FFFFFFFFh     amazing?  

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