11/12/12 23:51:16.42
>>6-10
すんません。偉そうに教える程の知識は無いんですが、、、
「暗黙」だろうが「明示」だろうが、優先順位は変わらないと思います。
そして、式内では「精度の高い型」に変換されるので
i = c<<16;
は、うちは64bitOS(linux)
(1)16はint型とみなされる。
(2)c<<16 で右辺の16はint型なので、cは暗黙的にint型にキャストされる。
(3)i = c<<16 で左辺の(unsigned int)にキャストされる。
ってな感じだと思っていたのです。
・・・って、みなさんの言う、整数拡張ってwikiって見たら、
確かに演算子ではないですね。ということは、無条件に行われるから
優先順位が一番高いとも言えるのかな。
すっかり、ミイラ取りがミイラになっています。
とりあえず、多分、前スレ>>999さんは
unsigned char c;
unsigned int i;
c = 0xff;
i = (unsigned char)(c<<(unsigned char)(16));
printf("c: %x\n", (unsigned int)c);
printf("i: %x\n", i);
を期待されていたのでしょう。