問題

我在C中以傳統的宣告方式聲明瞭函式pow但是,函式的輸出是不正確的.我不需要在這裡包含math.h,因為我宣告函式和它的物件程式碼已經存在.這是我的程式碼:

 #include<stdio.h>

double pow();           //traditional declaration doesnt work, why??

int main()
{
    printf("pow(2, 3) = %g", pow(2, 3));
    return 0;
}
 

上面的輸出是1,而它應該是8.請幫我.

  最佳答案

傳統宣告不起作用,為什麼?

因為沒有原型,你提供的兩個ints不會轉換為pow實際接受的雙打.使用“傳統”宣告,你必須努力確保提供函式預期的引數型別,或者你將在程式中有自己未定義的行為.

這是偏好原型的一個原因,並且實際上使用為標準函式提供它們的標準庫標頭。

  相同標籤的其他問題

cstdoutheader-filesobject-code