[英]Function call with different datatypes
這個程序的第 7 行不是“pay = prt(pay);”嗎? 應該拋出編譯或運行時錯誤,因為它將 int 傳遞給需要雙精度的參數? 我用 dev-c++ 很好地編譯了它,並用 output 的兩行運行了程序。 請解釋一下,謝謝。
#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);
}
C 在這種情況下會自動在不同的數字類型之間進行轉換。
請參閱類 C 語言中的隱式類型轉換。
您將 function 聲明為int
但從未返回任何內容,也沒有給main
返回類型。 我想說任何編譯器都有權拒絕您的代碼。
具有較小或相等大小的數據類型可以轉換為較大的數據類型。
在相反的情況下:浮點到 int 會導致截斷,即刪除小數部分。 double to float 會導致將 digit long int 舍入為 int 會導致丟棄多余的高階位。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.