顯然,大家容易想到就是用sizeof,但是人家面試官就不讓用sizeof實現,就讓自己編程實現,這下就發毛了。
哈哈,其實沒必要,只要知道sizeof的底層實現便可。sizeof其實不是一個函數只是一個運算符,很簡單。
其原理就是當我們對數據類型地址進行加1和減1操作時,實際上就是加或減了相應數據類型字節數的整數倍,其代碼如下:
#define sizeof(L_Value) ((char*)(&L_Value + 1) - (char*)(&L_Value))
當然能夠與unsigned搭配的數據類型也可以用令其等零,取反也可以實現。
代碼如下:
哈哈,這樣知道怎麼求了吧,我覺得還是用最通用的比較好,就是位操作,效率又高。