si的价值应该是多少?

时间:2017-08-29 18:17:08

标签: c type-conversion

我正在努力训练下面给出的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;

}

1 个答案:

答案 0 :(得分:2)

当您使用%d说明符强制printf期望int时,您在浮点表示中传递值。

当你将变量传递给像printf这样的varndic函数时,没有'自动强制转换',这些值作为它们实际的数据类型传递给函数(或者在某些情况下升级为更大的兼容类型),因为{{3是弱类型的语言。

如果您使用不兼容的内部代表传递类型,您将获得垃圾输出。

更改

printf("SI = %d", si);

printf("SI = %f", si);

或(如果你想获得表达式的整数值)

printf("SI = %d", (int)si);