不同数据类型的函数调用

发布于 2024-11-19 20:32:29 字数 337 浏览 4 评论 0原文

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

Isn't line 7 of this program "pay = prt(pay);" supposed to throw a compile or run-time error because it is passing in an int to a param that requires a double? I compiled it fine with dev-c++ and ran the program with both lines of output. Please explain, thank you.

#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);   
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

掌心的温暖 2024-11-26 20:32:29

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

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

C will automatically convert between different numeric types in this situation.

See Implicit type conversion in C-like languages.

ま昔日黯然 2024-11-26 20:32:29

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

You declared a function as int but never returned anything, and didn't give main a return type either. I'd say any compiler would be well within it's rights to reject your code.

木落 2024-11-26 20:32:29

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

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

data type having smaller or equal size can be converted to higher one.

in reverse case:
Float to int causes truncation, ie removal of the fractional part.
double to float causes rounding of digit
long int to int causes dropping of excess higher order bits.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文