当我执行此代码时,它返回我 1610612736
void main(){
float a=3.3f;
int b=2;
printf("%d",a*b);
}
为什么以及如何解决这个问题?
编辑:这甚至不是整数和浮点数的问题,如果我替换 int b=2: by float b=2.0f 它返回相同的愚蠢结果
float
a和 an相乘的结果int
是 a float
。除此之外,它会double
在传递到时被提升到printf
。您需要%a
、%e
或%f
格式%g
。该%d
格式用于打印int
类型。
编者按:的返回值main
应该是int
. 这是一个固定的程序:
#include <stdio.h>
int main(void)
{
float a = 3.3f;
int b = 2;
printf("%a\n", a * b);
printf("%e\n", a * b);
printf("%f\n", a * b);
printf("%g\n", a * b);
return 0;
}
及其输出:
$ ./example
0x1.a66666p+2
6.600000e+00
6.600000
6.6
或者,你也可以这样做
printf("%d\n", (int)(a*b));
这将打印您(有点)期望的结果。
您应该始终明确地对变量进行类型转换以匹配格式字符串,否则您可能会看到一些奇怪的值被打印出来。