1

这个程序的第 7 行不是“pay = prt(pay);”吗?应该抛出编译或运行时错误,因为它将 int 传递给需要双精度的参数?我用 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);   
}
4

3 回答 3

6

在这种情况下,C 会自动在不同的数字类型之间进行转换。

请参阅类 C 语言中的隐式类型转换

于 2011-07-14T16:54:19.777 回答
3

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

于 2011-07-14T17:10:00.647 回答
-1

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

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

于 2011-07-14T21:07:40.980 回答