1樓:匿名使用者
答案:後面
解釋:編譯器是按順序來傳引數的。詳解如下:
1. 例如void fun(int a, int b, int c=0);那麼編譯器就按照a,b,c的順序給函式fun傳引數,fun函式裡c是預設引數,就是說,呼叫fun函式時,可以不必傳3個引數,可以寫成fun(1,2),這樣的話,a=1,b=2,c=0.
2. 如果預設引數不是在後面部分,而是在前面的話,編譯器就會報錯,譬如:void f(int a, int b=0, int c);這樣的話,預設引數是沒有任何意義的,因為你寫f(1,2)的時候,編譯器是把1賦值給a,2賦值給b,結果c沒有賦值,故出錯。
總結:為了避免出現上述的第2種情況,編譯器只要檢查到預設引數後面,還有非預設引數,就會報錯。所以說,乙個函式如果有預設引數,那麼預設引數一定都放在引數列表中的後面部分,否則,編譯器報錯。
2樓:匿名使用者
最右側,編譯器才能判斷出來是不是需要幫你加上預設引數
你少填引數了,它再幫你加上
如果呼叫的函式引數有預設值,可以傳遞該引數的值,也可以不傳遞,直接使用預設值?
3樓:
是的,若形參有預設值,可以傳遞該引數的值,也可以不傳遞,但形參的預設值要從形參列表最右端開始設定,如:
int sum(int x, int y=2, int z=8);這樣設定是對的,可以全部設定預設值,也可以部分設定預設值
int sum(int x = 3, int y, int z);這樣設定是錯誤的,當給部分形參設定預設值,要從引數列表的最右端開始設定。
c++中函式預設值的問題
4樓:
" 函式中有多個預設引數,則形參應從最右邊依次向左設定。"
-- 意思是,當第i 個引數有預設值時,
第i +1,i+2,i+3 。。。直到最後乙個引數都必須 給預設值。否則語法錯。
void point(int x,int y=0,int z=0); -- 對
void point(int =0,int,int =0); -- 錯
void point(int =0,int =0,int); -- 錯
void point(int ,int,int =0); -- 對
"當呼叫函式時,只能向左匹配引數。" --
如果函式有4個引數,你呼叫時填了兩個,那麼第3和第4個引數用預設值 -- (對的)
如果函式有4個引數,你呼叫時填了3個,那麼第4個引數用預設值。-- (對的)
你不能說,我填2個引數,算第1第3 ,第2和第4個引數用預設值。-- (就錯了)。
5樓:sweet丶奈何
void point(int x=10,y=20); //這句是 宣告
void point(int x=10,y=20) {} //帶函式體沒有分號是定義
所以第一節裡只有宣告沒有定義,函式在呼叫前需要宣告。
但如果在main函式前定義的函式是可以省略宣告直接呼叫的。
簡而言之,就是使用預設引數時是把預設引數寫道宣告裡了,省略宣告時寫到定義裡(其實也就是宣告和定義合二為一了)。
6樓:巫彬計採楓
必須按照引數順序對位入座。你的呼叫相當於把"y"(char)賦給了int。這樣可定是不行的。
7樓:盈彗張繡
函式傳值呼叫時,實際引數作為右表示式想形式引數提供初始值。c++的允許指定引數的預設值,凼函式呼叫中公升略預設引數時,預設值自動傳遞被呼叫函式
c語言中,函式的定義,裡面的形參表中如果,多個如果多個引數他們的
8樓:小傻
就目前來看是不能的,其實你是想減少重複的工作,那你可以傳遞乙個陣列進去,就不會這麼麻煩了。
excel中if函式怎麼用有多個條件,多個結果
可以巢狀使用。只有兩個互斥條件,只要乙個if函式即可,兩個以上就可以採用巢狀形式,如3個條件結果。if 條件1,結果1,if 條件2,結果2,結果3 謝謝。excel if函式多個條件如何求取多個結果 由於你的圖沒有行列標號,所以暫按 職位 在a1 入職 在b1單元格的操作,則公式在i2單元格,應該...
如果在c語言函式中有多條return語句程式如何執行
第一 如果一個函式 現了多出return語句,那麼函式會執行首先遇到的那個return語句 不一定是寫在最前面的 第二 關於你所說的返回多個值的問題,因為c語言也是採用的按值傳參的方式,所以只能返回一個返回值。如果需要得到多個返回值,那麼可以採用指標做為函式引數 具體做法參見那個經典的交換兩個數的操...
滿足多個條件的求和函式
yy 的是一種方式,但不僅限於這種方式,最好能給個 以便更好的解決你的問題。excel 函式 同時滿足兩個條件的求和 excel想要同時滿足兩個抄條件的求和,使用資料bai透視表功能即可du,具體zhi操作步驟如下 1 開啟excel 後,dao點選資料功能區中的 資料透視表 2 在資料透視表的導航...