函數沒有聲明編譯通過了
A. 定義的函數必須要聲明嗎為什麼我沒聲明也成功了
你的主函數也沒有函數返回類型 又沒有聲明函數 絕對不會成功 主函數改為void main 然後su(int x) 函數也沒有返回類型 不可能正確 比如你寫成void su(int x) 在主函數之前 在寫上void su(int x);這句表示聲明一下 才行
B. c語言,為什麼我寫的的這個函數沒有聲明,我也能調用呢
這個未聲明只是警告,是一種提醒,有些時候不會影響編譯,應該盡量可能避免。
以上代碼把第11行的內容復制在第1行、第2行之間,末尾再加個分號(;),就可以了,這就是函數的聲明。
C. C語言 函數調用 如果沒進行聲明會怎麼樣
1、由於程序是順序執行,如果沒有提前聲明,程序會找不到函數,於是報錯。
2、聲明的主要作用是告訴程序我下面要用到這個函數,程序會去找這個函數的定義,然後調用。
3、也可以把nt max(int x,int y)放到main函數之前,就不用寫聲明了。
D. 編譯已通過,為什麼無法找到函數定義
你把大括弧的位置放錯了,sushu函數被定義在了main函數裡面,但是按照C語言的規定,函數不允許嵌套定義,所以你的sushu相當於沒有定義(不知為何你的編譯器沒有報錯說不允許在函數內定義函數)。解決方法是把你最後面多出來的大括弧移到main函數最後面。
E. 請問C語言中我的主調函數之前沒有寫函數聲明 為什麼還能跑通
在C語言中,函數聲明只是推薦,而不是強制。
當沒有函數聲明的時候,編譯器沒辦法對函數的參數個數和類型做檢查,於是帶來風險,但並不是找不到。
你看下你編譯的時候,針對沒有聲明的函數,應該會有一個warning的。代表編譯器檢查到了這個問題,但是並不是致命的。所以只是warning, 而不是error。
F. 沒有聲明函數也可以通過編譯
如果該函數聲明的修飾符為public類型的,在main中當然可以直接調用了。public不受調用限制
G. c語言這段代碼為什麼fun函數沒有聲明,卻還是可以正常運行
我真的可想知道就這代碼你原封不動地搬到編譯器里能通過運行?讓人家回答你得先給個整的代碼啊.
H. c 里的函數可否不聲明 直接在main()後面使用
函數未先聲明,直接在main中使用,在Turbo C 2.0,Borland C++編譯是可以通過的,不過這樣不是良好的編程習慣,建議:1. 將函數移到main之前;2. 在main之前聲明,在main之後再為函數代碼。對於較大的代碼,函數多,相互之間存在各種引用,為了便於閱讀、管理,減少錯誤,強烈建議採用第2種方式,這是一種良好的編程習慣。而且現在很多編譯器對於函數未先聲明,直接使用會給出警告或錯誤。
I. c語言規定函數使用前必須先聲明或定義,那為什麼我的max()函數在使用前不定義和聲明都能編譯成功
我用的code::blocks是必須先聲明再調用的,但是高級語言編譯器會做優化,它會先將聲明和定義的東西執行,再執行代碼,所以寫Java和C#的時候是不需要聲明在調用之前的
J. 函數已經聲明過了,但是編譯的時候還是說沒有聲明
#include <iostream>
#include <iomanip>
#include "io.h"
void Calcluate(int month_index, double interest_ratio, double monthly_pay, double bal);
int main()
{
double monthly_payment, interest_rate, years;
int ration_in_month;
//Get the monthly payment.
string prompt = "Please enter the monthly payment: ";
monthly_payment = GetParam(prompt, 1.0, 100000.0);
//Get the interest rate.
prompt = "Please enter the interest rate: ";
interest_rate = GetParam(prompt, 0, 1);
//Get the ration of the loan.
prompt = "Please enter the ration of the loan, in years: ";
do {
years = GetParam(prompt, 1, 100);
}while (10 * years - 10 * (int)years > 0);
ration_in_month = 12 * years;
//Print the header of the output table.
PrintHeader ();
//Calculate the loans.
Calcluate(ration_in_month, interest_rate, monthly_payment, 0);//單詞拼寫錯誤改過後就沒有了
return 0;
}
void Calcluate(int month_index, double interest_ratio, double monthly_pay, double bal)
{
double interests, prin;
do{
bal = (monthly_pay + bal) / (1 + interest_ratio / 12);
interests = bal * interest_ratio / 12;
prin = monthly_pay - interests;
//Print the table.
PrintMonthlyData (month_index, prin, interests, bal);
}while (month_index-- > 1);
}