为什么printf(“%f”,0);给出未定义的行为?

问题描述 投票:86回答:10

该声明

printf("%f\n",0.0f);

打印0。

但是,声明

printf("%f\n",0);

打印随机值。

我意识到我表现出某种未定义的行为,但我无法弄明白为什么具体。

所有位都为0的浮点值仍然是值为0的有效floatfloatint在我的机器上大小相同(如果这甚至是相关的)。

为什么在printf中使用整数文字而不是浮点文字导致此行为?

附:如果我使用,可以看到相同的行为

int i = 0;
printf("%f\n", i);
c++ c printf implicit-conversion undefined-behavior
10个回答
© www.soinside.com 2019 - 2024. All rights reserved.