型別識別符號必須與函式引數型別一致嗎

時間 2021-12-23 15:07:35

1樓:百思得學姐

這麼說吧(linux環境)

1、如果不一致的話,編譯時加上-wall 會報警的;

2、我不知道應用層是怎樣的,比如底層的**,如果不一致可能會產生一些未知的bug。

比如:int 是4位元組的,long根據平臺不同可能是4位元組或者8位元組。

可能平時在x86下面沒問題,因為都是4位元組的,但是如果一到某個系統,long是8位元組的,可能就產生bug了,而且這種bug很難查詢的。

就簡單點,在long為8位的平臺:

比如是一個long的資料,佔有8位, 把long轉為4為int時,這樣編譯器就會截斷long高上位,只取long的低4位了,這樣就會有資料的錯誤了。

3、保持一致也是一個良好的程式設計風格,便於維護。好的程式設計風格利己利人。

祝:天天嗨皮

2樓:匿名使用者

一般情況下應該一致

即使不一致 有些也可以被編譯器自動轉換比如void fun(long x);

用的時候你

int x= 2;

fun(x)也可以編譯過,x被先轉換為long型別,然後呼叫 fun

3樓:匿名使用者

呼叫函式進行如下過程:

if(完全匹配)

else if(模板函式匹配)

else if(過載函式,強制轉換使之匹配)else

大家好,c語言定義函式時,函式名型別和形參型別要一致嗎?比如:char

4樓:

函式的返回值型別可有可無,有的話其型別與形參以及其他內部變數的型別沒有任何關係。

5樓:匿名使用者

可以的,char add(int x,int y)中的char是函式的返回值,不必要與引數型別一樣

c++中兩個函式函式名相同,引數型別和引數個數也相同,但是函式型別不同,那它們是過載函式嗎?

6樓:匿名使用者

函式過載只看引數個數和型別 所以如果只是返回值相同的函式就不是過載函式了

7樓:莊政警

這樣不是過載。

函式過載要求函式的引數個數不同或者引數型別不同。

因為呼叫函式的時候無法確認函式的返回型別,所以僅返回型別不同的函式都可以匹配,這樣就造成二義性,所以僅僅是返回型別不同是不能過載的,

比如有int f(int a)

float f(int a)

int main()

8樓:匿名使用者

函式過載是是根據函式的引數列表區分函式的版本,返回值不同是不能區分的。

比如 int fun( int a,int b);

在編譯的時候,編譯器編譯函式,生成一個類似"_fun_int_int"的名稱放在庫中,以便程式呼叫的時候使用。

如果你想過載void fun( int a,int b);

生成的函式名稱也是"_fun_int_int"

函式在庫中的名稱是唯一的,就像你在程式中定義變數一樣。

這就算是重定義吧(姑且這麼說),這時編譯器該呼叫哪個函式?

9樓:

不是過載函式,編譯器應該會報錯。

c語言中,在定義函式時,函式返回值型別與形式引數的型別一定要與宣告函式時函式返回值型別與形式引數的

10樓:

當然要一致

不過,對於形參來說,只要型別一致就行,形參變數在定義時和宣告時可以不一致,或者,在宣告函式時,可以省略形參變數名,只寫形參變數型別即可

比如你定義了

int max(int x,int y)

你的函式宣告可以寫成這三種形式的任意一種(一般來說使用第三種更簡潔)int max(int x,int y);

int max(int a,int b);

int max(int,int);

c語言中用函式做引數怎麼用 5

11樓:齊霸王在江湖夢

#include

void print_result(char *funcname, int (*pfunc)(int), int x)

int inc(int x)

int main()

執行結果:

inc(5)=6

12樓:手機使用者

示例程式:

#include

void print_result(char *funcname, int (*pfunc)(int), int x)

int inc(int x)

int main()

執行結果:

inc(5)=6

13樓:手機使用者

不可以直接拿函式做引數的。

只能這樣

命名函式一(),return一個值或表示式然後函式二(引數)

函式二,引數可以等於函式一的return的值或表示式。

14樓:匿名使用者

在上面的這個程式中,其實函式int inc(int)就相當於int(*inc)(int),因為ansi規定函式本身就是一個指標,而上面的inc其實本身就是一個指標,這個指標指向一個返回整數的函式,於是在函式void print_result(char *funcname,int(*pfunc)(int),int x)中,int(*pfunc)(int)其實本身就是一個指標,這樣就不難理解,在main()函式中呼叫print_result函式時傳遞的是inc了,因為inc也是一個指向函式的指標。

如果想透徹地瞭解這一點,我建議你看一本書:

js提示缺少識別符號,js 缺少識別符號 字串或數字 怎麼解決,各位大俠

js提示缺少識別符號,是 錯誤造成的,解決方法如下 1 首先新建如下目錄結構的檔案,htmlpage1 頁面。2 在頁面中引用jquery檔案,同時加入一個select下拉框,執行效果如下。3 給下拉框加個id,同時使用jquery設定title屬性,用於展示提示資訊。4 對於整個下拉框,也可以在第...

C 新手問題 什麼是識別符號,C 如何宣告識別符號,急

c 中識別符號用於給在程式中定義的變數 函式 陣列 類 結構體以及用 typedef 自定義的資料型別等進行命名。一個標準的識別符號需要遵循以下規則 1.必須由字母 數字 下劃線構成,不能包含其它字元 2.第一個字元只能是字母或下劃線。注意 c 本身沒有對識別符號長度進行限制,但是有些編譯器限制了識...

什麼是C語言中的識別符號,c語言中的識別符號分幾類

c c 中,是你用來標識變數名 符號常量名 函式名 陣列名 檔名 類名 物件名等的c c 有效識別符號的構成規則如下 1第一個字元必須是字母 不分大小寫 或下劃線 2後跟字母 不分大小寫 下劃線 或數字組成 3識別符號中的大小寫字母有區別。如,變數max,max,max代表三個不同的變數 4不能與c...