今日、php カーネル コードを読んだときに、 dir:php5.3/Zend/Zend.h
に行コードがあり、混乱しました。
コードは次のとおりです。
/* overloaded elements data types */
#define OE_IS_ARRAY (1<<0)
#define OE_IS_OBJECT (1<<1)
#define OE_IS_METHOD (1<<2)
こういう意味ですか?そして、4バイトのint型を使用し、左シフト演算を示します。
0000 0000 0000 0000 0000 0000 0000 0000 = 0
After 1 <<
0000 0000 0000 0000 0000 0000 0000 0000 = 0
___________________________________________
0000 0000 0000 0000 0000 0000 0000 0001 = 1
After 1<<
0000 0000 0000 0000 0000 0000 0000 0010 = 2
___________________________________________
0000 0000 0000 0000 0000 0000 0000 0010 = 1
After 1<<
0000 0000 0000 0000 0000 0000 0000 0100 = 4
しかし、彼女/彼がこれをやりたいのなら、const変数を直接割り当てないのはなぜですか?
/* overloaded elements data types */
#define OE_IS_ARRAY (0)//turn the 1<<0 directly
#define OE_IS_OBJECT (2)//turn the 1<<1 directly
#define OE_IS_METHOD (4)//turn the 1<<2 directly
ご存じでしたら、どうぞよろしくお願いします!:)