【发布时间】:2021-02-23 07:31:45
【问题描述】:
#include <stdio.h>
#include <math.h>
int main(void)
{
float a = 16777215;
int b = pow(2, 26);
float c = 22345678;
printf("%f\n", a);
printf("%f\n", b);
puts("---------------");
printf("%f\n", c);
printf("%f\n", b);
return 0;
}
输出:
16777215.000000
16777215.000000
---------------
22345678.000000
22345678.000000
为什么前面的 printf 输出会影响后面的 printf 输出?
【问题讨论】:
-
启用警告,
int不是%f。这是未定义的行为。 -
您通过传递类型错误的数据来调用 未定义的行为。确定此特定结果的详细原因将需要有关环境的一些知识,包括调用约定。
标签: c