シフト演算子優先度の低いです

1  INT メイン()
 2  {
 3      のconst  のchar * STR = " 1 " 4      INTハッシュ値= 0 5      ながら(!* STR = ' \ 0 ' 6      {
 7          ハッシュ値=ハッシュ値<< 4 + * STR。
8          ++ STR。
9      }
 10  
11      戻り 0 ;
12 }

ハッシュ値の値がゼロで、理由はないされていますか?

低優先度左シフト演算子ので、その結果、それは、上記の結果の表現である場合。

1ハッシュ値=ハッシュ値<<(4 + * STR)。

正しい姿勢:

1つのハッシュ値=(ハッシュ値<< 4)+ * STR。

 

おすすめ

転載: www.cnblogs.com/XiaoXiaoShuai-/p/11598374.html