這是錯誤,既然函數(shù)定義要返回值,就返回一個值,不返回結果是未知的 c語言可以允許這樣的代碼,c++視為錯誤
創(chuàng)新互聯(lián)是創(chuàng)新、創(chuàng)意、研發(fā)型一體的綜合型網(wǎng)站建設公司,自成立以來公司不斷探索創(chuàng)新,始終堅持為客戶提供滿意周到的服務,在本地打下了良好的口碑,在過去的十多年時間我們累計服務了上千家以及全國政企客戶,如石雕等企業(yè)單位,完善的項目管理流程,嚴格把控項目進度與質(zhì)量監(jiān)控加上過硬的技術實力獲得客戶的一致夸獎。
這是vc2017結果:
deubg模式結果是4,release結果是0, 所以這個代碼沒有意義
debug模式 結果是4
release模式 結果是0
無返回值就是函數(shù)只執(zhí)行數(shù)據(jù)處理,不返回值。函數(shù)定義時一般用void關鍵字表示無返回值。
如調(diào)用string類庫中的int
i
=
strcmp("abc",
"abc")函數(shù)判斷兩個參數(shù)是不是相等,兩個都"abc"
則i
=
0,這是有返回值的
不是必須有返回值。如果沒有返回值類型名為"void"。
void函數(shù)的定義:
void+函數(shù)名()//無類型+函數(shù)名
{//?程序代碼
}
如果沒有返回值類型名為"void", 整數(shù)類型int 類型返回值為整數(shù)類型int,以此類推……
類型名有:void int long float int* long* float* ……
擴展資料:
需要說明的是:
1、一個C語言源程序可以由一個或多個源文件組成。
2、每個源文件可由一個或多個函數(shù)組成。
3、一個源程序不論由多少個文件組成,都有一個且只能有一個main函數(shù),即主函數(shù)。是整個程序的入口。
4、源程序中可以有預處理命令(包括include 命令,ifdef、ifndef命令、define命令),預處理命令通常應放在源文件或源程序的最前面。
5、每一個說明,每一個語句都必須以分號結尾。但預處理命令,函數(shù)頭和花括號“}”之后不能加分號。(結構體、聯(lián)合體、枚舉型的聲明的“}”后要加“ ;”。)
6、標識符,關鍵字之間必須至少加一個空格以示間隔。若已有明顯的間隔符,也可不再加空格來間隔。
參考資料:
百度百科-函數(shù)
比如說 延時 中斷
其實沒有返回值不代表對程序沒影響
如果在子函數(shù)里對全局變量做改變
那么其他函數(shù)在用這個變量時就是改變過得值
沒有返回值只是代表了函數(shù)運行結果不是一個簡單的數(shù)字
應該定義函數(shù)類型為void
注意 不能是不寫
如果不寫 那么默認返回值是int
只有明確寫明返回值是void類型,那么才是沒有返回值的
比如
void func(int a);
很正常啊,沒有返回值,就是不需要返回值。
比如:定義一個函數(shù),在函數(shù)中打印信息到屏幕上。
void?displayMessage(char?*msg)?{
#ifdef?NEED_DEBUG
printf("%s\n",?msg);
#endif
}
很顯然,調(diào)用這個函數(shù),我不需要知道信息是不是已經(jīng)打印到屏幕上了。(只有調(diào)試程序,才需要顯示信息)
有很多類似的場景,比如:某個程序,根據(jù)給定的參數(shù),在屏幕上繪制完成一個圖像,而調(diào)用者不關心圖像是不是繪得正確,因為正確與否不影響程序的繼續(xù)執(zhí)行。