具有不同数据类型的函数调用

时间:2011-07-14 16:50:26

标签: c types function-calls

此计划的第7行不是“pay = prt(pay);”应该抛出编译或运行时错误,因为它将int传递给需要double的param?我用dev-c ++编译好了,用两行输出运行程序。请解释一下,谢谢。

#include <stdio.h>
int prt(double b);
main ()
{
    int pay = 3;
    double tax = 2.2;
    pay = prt(pay);
    prt(tax);
}     

int prt(double b)
{
    b *= 2;
    printf("%.2lf\n", b);   
}

3 个答案:

答案 0 :(得分:6)

在这种情况下,

C会自动在不同的数字类型之间进行转换。

请参阅Implicit type conversion in C-like languages

答案 1 :(得分:3)

您将函数声明为int但从未返回任何内容,并且也没有给main返回类型。我会说任何编译器都有权拒绝你的代码。

答案 2 :(得分:-1)

具有更小或相等大小的数据类型可以转换为更高的数据类型。

相反的情况:     浮点到int会导致截断,即删除小数部分。     double to float导致数字四舍五入     long int to int导致丢弃多余的高阶位。