C语言中int转Double的方法

Zul*_*aev 0 c types casting operator-precedence

int num1, num2;
Run Code Online (Sandbox Code Playgroud)

double average;

average=(double)(num1+num2)/2;
printf("average: %d", average);
Run Code Online (Sandbox Code Playgroud)

我的测试 printf 显示平均值为: 0

这可能太简单了,但我看不到。我的输入都是“int”,平均值是“double”,但不知怎的,它计算不正确?

dbu*_*ush 5

您使用了错误的格式说明符printf

格式%d说明符需要一个int参数,但您要传递一个double. 使用错误的格式说明符会引发未定义的行为

要打印 a double,请使用%f.

printf("average: %f\n", average);
Run Code Online (Sandbox Code Playgroud)