c - C中的浮点变量

标签 c format-specifiers

<分区>

可能这是一个简单的问题,但我不确定 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/

相关文章:

c - 将 C/C++ 变量存储在处理器缓存中而不是系统内存中

c - 线程 : value stored in heap 问题

c - 在代码中设置 Cinterion BGS2-W 调制解调器证书

c - 如何让 MinGW GCC 识别 size_t 的 %zu 格式说明符?

c - scanf 格式说明符中的星号是什么意思?

c - 错误的 printf 参数数量导致奇怪的结果

c - 如何在C中不使用科学记数法显示大双数?

c - 关于多进程中的 mmap

c - C 中 main 中或 main 之前的函数原型(prototype)

C "%d"格式说明符