ん?>>3に書いてあるとおりじゃないか^^

c<<16の段階で、両辺が整数型にキャストされてる。
左辺 i が整数であるかどうかはまったく関係ない。
double d = c << 16;
のごとく書いても、cは整数型にキャストされるし
char s = c << 16;
のごとく書いても、cは整数型にキャストされる。
(そして結果はchar型にキャストされて面白い事になる)。