下列 C 指令的輸出為何? short s = 32768/2; printf("%hd %hd", s<<1, s<<2);
A-32768 0正確答案
B32768 65536
C65536 32768
D32768 0
答案與詳解
s = 32768/2 = 16384 (二進位 0100 0000 0000 0000)。s<<1 = 1000 0000 0000 0000,以 short (有號 16 位元) 解讀為 -32768;s<<2 = 0000 0000 0000 0000 = 0。%hd 強制以 short 印出,故輸出 -32768 0。
