我有代码:
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);
Run Code Online (Sandbox Code Playgroud)
输出:
(signed short)(a << 4): 448.000000
(a << 4): -523840.000000
Run Code Online (Sandbox Code Playgroud)
为什么16个高级寄存器在shift(c = a << 4;)后没有复位?
程序在x86机器上使用32位linux执行.
b =(签名简称)(a << 4);
该行执行以下操作:
c = a << 4;
该行执行以下操作:
事实上'a'被声明为带符号的short并没有什么区别,因为所有计算总是使用int数据类型完成.我假设你的系统有32位整数.
| 归档时间: |
|
| 查看次数: |
216 次 |
| 最近记录: |