gpt4 book ai didi

c - 除法和类次的区别

转载 作者:太空宇宙 更新时间:2023-11-04 00:16:52 24 4
gpt4 key购买 nike

我正在阅读 this关于SO的问题。阅读第一个答案后,我无法理解 -5 >> 1 = -3 的原因。我还围绕它做了一些调整。

您还可以查看代码和输出 here .这是我所做的:

#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;
}

输出:

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

我无法理解 5/2 == 2.168831, 5 >> 2 == 2.168831, 5 >> 1 == -3

为什么会这样? (答案可能非常基础,我遗漏了一些基本的东西,所以请指导我)。

最佳答案

-5/2 的结果是 int,而不是 floatdouble。但是,您的格式说明符是 %f,因此您的 int解释float,这是没有意义的,因此不稳定的值(value)。您正在做的事情称为未定义行为:任何事情都可能发生。

关于c - 除法和类次的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14302573/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com