我有代码:
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;)?
在使用32位linux的x86机器上执行的程序。
发布于 2011-09-25 00:32:57
符号b=(
short)(a << 4);
此行执行以下操作:
c=a << 4;
此行执行以下操作:
将'a‘声明为带符号的短整型并没有什么区别,因为所有的计算都是使用int数据类型完成的。我假设你的系统有32位整数。
https://stackoverflow.com/questions/7540251
复制相似问题