<分区>
可能这是一个简单的问题,但我不确定 float 变量是如何存储在内存中的以及它为什么以这种方式表现,有人可以解释以下行为。
#include<stdio.h>
int main ()
{
int a = 9/5;
printf("%f\n", a);
return 0;
}
输出:
0.000000
我看过一些关于浮点变量如何存储在内存中的信息,它有关于尾数、指数和符号的内容。但我不知道如何在这里关联它。
<分区>
可能这是一个简单的问题,但我不确定 float 变量是如何存储在内存中的以及它为什么以这种方式表现,有人可以解释以下行为。
#include<stdio.h>
int main ()
{
int a = 9/5;
printf("%f\n", a);
return 0;
}
0.000000
我看过一些关于浮点变量如何存储在内存中的信息,它有关于尾数、指数和符号的内容。但我不知道如何在这里关联它。
最佳答案
int a = 9/5;
执行整数除法并忽略余数,因此 a
设置为 1。尝试使用 %f
打印它会给出未定义的行为,但偶然你得到了 0.000000
做
double a = 9./5.;
相反,如果整数除法是所需的行为,则使用 %d
打印。 (float
也可以,但是 a
在传递给 printf
时会被提升为 double
,所以没有理由不要使用double
。)
关于c - C中的浮点变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13066075/