Abh*_*pta 1 c floating-point bit-shift division
我正在读这个问题.看完第一个答案后,我无法理解原因-5 >> 1 = -3.我还对它进行了一些调整.
您还可以在此处查看代码和输出.这是我做的:
#include<stdio.h>
int main(){
printf("5/2 = %d\n",5/2);
printf("5 >> 1 = %d\n",5 >> 1);
printf("5/2 = %lf\n",5/2);
printf("5 >> 1 = %f\n",5 >> 1);
printf("-5/2 = %d\n",-5/2);
printf("-5 >> 1 = %d\n",-5 >> 1);
printf("-5/2 = %f\n",-5/2);
printf("-5 >> 1 = %f\n",-5 >> 1);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
5/2 = 2
5 >> 1 = 2
5/2 = 2.168831
5 >> 1 = 2.168831
-5/2 = -2
-5 >> 1 = -3
-5/2 = 2.168833
-5 >> 1 = 2.168833
Run Code Online (Sandbox Code Playgroud)
我无法理解5/2 == 2.168831, 5 >> 2 == 2.168831, 5 >> 1 == -3.
为什么会这样? (答案可能是非常基本的,我错过了一些基本的东西,所以请指导我).
结果-5 / 2是a int,而不是a float或a double.但是你的格式说明符是%f,所以你int被解释为a float,这是没有意义的,因此不稳定的值.你在做什么被称为未定义的行为:任何事情都可能发生.
| 归档时间: |
|
| 查看次数: |
177 次 |
| 最近记录: |