我正在努力训练下面给出的c程序的输出,但无法弄清楚。
为什么si = 0?
#include<stdio.h>
int main(void){
float p = 1000;
float r = 5;
float t = 2;
float si = p * r * t / 100;
printf("SI = %d", si);
return 0;
}
答案 0 :(得分:2)
当您使用%d
说明符强制printf期望int
时,您在浮点表示中传递值。
当你将变量传递给像printf这样的varndic函数时,没有'自动强制转换',这些值作为它们实际的数据类型传递给函数(或者在某些情况下升级为更大的兼容类型),因为{{3是弱类型的语言。
如果您使用不兼容的内部代表传递类型,您将获得垃圾输出。
更改
printf("SI = %d", si);
到
printf("SI = %f", si);
或(如果你想获得表达式的整数值)
printf("SI = %d", (int)si);