关于#c语言#的问题,这两个有什么不同吗


#include<stdio.h>

int main(){
    int min,cost;
    float path;
    scanf("%f %d",&path,&min);
    if(path<=3)
        cost=10+min/5*2;
    else if(path<=10)
        cost=10+2*(path-3)+min/5*2;
    else
        cost=24+3*(path-10)+min/5*2;
    printf("%d",cost);
    
    return 0;
}
#include<stdio.h>

int main(){
    int min;
    float path,cost;
    scanf("%f %d",&path,&min);
    if(path<=3)
        cost=10+min/5*2;
    else if(path<=10)
        cost=10+2*(path-3)+min/5*2;
    else
        cost=24+3*(path-10)+min/5*2;
    printf("%0.f",cost);
    
    return 0;
}

上面那个cost变量取int型,下面的cost取浮点型,也就是说最后上面那个算出来的值只能是整数,下面那个指可以是小数。主要就是精度的问题。

const 数据类型不同,计算得到的精度不同。

%0.f好像表面和%d一样,实际上在内存里不同