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。