我有代码:左移魔术
signed short a = -32740;
float c;
float b;
b = (signed short)(a << 4);
c = a << 4;
printf("(signed short)(a << 4): %f\n", b);
printf("(a << 4): %f\n", c);
输出:
(signed short)(a << 4): 448.000000
(a << 4): -523840.000000
为什么16个寄存器不复位移位(c = a << 4;
)后?
在x86机器上使用32位linux执行的程序。
你的意思是'float c'你在哪里写'float a'?什么是“高级注册”? – Cameron
你编译过吗? -1不编译它,测试它,** **发布之前! – Nawaz
整型促销。 –