重慶分公司,新征程啟航
為企業(yè)提供網站建設、域名注冊、服務器等服務
為企業(yè)提供網站建設、域名注冊、服務器等服務
scanf函數的原型如下:
成都創(chuàng)新互聯(lián)公司-成都網站建設公司,專注成都網站建設、成都做網站、網站營銷推廣,域名注冊,虛擬主機,綿陽服務器托管有關企業(yè)網站制作方案、改版、費用等問題,請聯(lián)系成都創(chuàng)新互聯(lián)公司。
int?scanf(const?char?*?restrict?format,...);
scanf的為什么返回值被忽略的原因是你的代碼中沒有使用scanf的返回值。
最簡答的解決方案是強制忽略返回值:
(void)?scanf("%d",?m);
另外一種方法是定義一個臨時變量接收scanf函數的返回值。
int?ret?=?scanf("%d",?m);
這個編譯器還有一個錯誤,它建議你不要用scanf,而是改為用scanf_s。
C語言中,如果要函數不返回值,則應該吧函數的類型定義為“void”。
在將函數定義為void類型的情況下在主調函數中調用該函數,該函數調用表達式不能被用作子表達式給其他變量賦值。
void的字面意思是“無類型”,void *則為“無類型指針”,void *可以指向任何類型的數據。
擴展資料:
void類型指針要注意規(guī)則:
1、void 指針是一種特殊的指針,表示為“無類型指針”,在 ANSI C 中使用它來代替“char*”作為通用指針的類型。由于 void 指針沒有特定的類型,因此它可以指向任何類型的數據。
2、void*類型只有地址信息沒有類型信息,所以不能計算偏移。
3、要將void指針賦值給其他類型的指針,必須進行強制類型轉換。
4、在編程中,如果函數的參數可以是任意類型指針,那么應該使用 void 指針作為函數的形參,這樣函數就可以接受任意數據類型的指針作為參數。
void使用注意:
1、如果函數沒有返回值,那么應聲明為void類型,在C語言中,凡不加返回值類型限定的函數,就會被編譯器作為返回整型值處理。但是許多程序員卻誤以為其為void類型。
2、如果函數無參數,那么應聲明其參數為void。
3、void不能代表一個真實的變量
參考資料來源:百度百科-void
一個函數的函數名既是該函數的代表,也是一個變量。由于函數名變量通常用來把函數的處理結果數據返回給調用函數,即遞歸調用,所以一般把函數名變量稱為返回值,函數的返回值類型是在定義函數時指定的。
函數可以有返回值,也可以沒有返回值。
1、沒有返回值的函數:功能只是完成一個操作,應將返回值類型定義為void,函數體內可沒有return語句。
2、有返回值的函數:函數的最后會有一個返回值return,可以用來獲取該函數執(zhí)行結果返回給該函數,讓外部調用該函數的。
一個函數的函數名既是該函數的代表,也是一個變量。由于函數名變量通常用來把函數的處理結果數據返回給調用函數,即遞歸調用,所以一般把函數名變量稱為返回值,函數的返回值類型是在定義函數時指定的。
擴展資料
C程序中的print函數:
是這樣寫的:printf("%d\n",printf("%d",printf("%d",i)));
一共有三個printf函數,我們可以使用一些代號來簡化這個printf函數,如下:
代號A: printf("%d",printf("%d",i));
代號B: printf("%d",i)
則C程序代碼可以簡化為:printf("%d\n",A); 那么我們就先來求A。而A,又可以簡化為:printf("%d",B);那么就先來求B。
B是 printf("%d",i),打印出“123”,即在C語言運行結果中,你最先看到的是123。C語言printf函數的返回值是printf實際控制輸出的字符數,那么打印的123 就是3個字符,因此printf("%d",i)返回的就是3,也就是B是3。
那么,A就可以寫為printf("%d",printf("%d",3));打印出3,即在運行結果中,你緊接著會看到3。
而打印出的3是1個字符,因此A就是1,那么printf("%d\n",A); 實際上就是printf("%d\n",1); 打印出1。
參考資料來源:百度百科-返回值
return 0; 返回0
returm1; 返回1
如果這兩句連起來用的話,返回0,后面的不會執(zhí)行
函數都會有返回值,這個份兩大類,一個是主函數,一個是子函數
第一大類是主函數,也就是main函數的返回值,
main也會有返回值,但是很少不會用到,一般來說大家都會忽略掉,一般來說不討論
但是在vc等編譯器中,好像是要求寫的return 0,對應main函數要加類型,也就是說寫主函數的時候int main(),必須寫上,要不然出錯
但是void main()這個可以不用,我記得好像是這樣
第二大類是子函數的返回值
這個一般是兩種
一個是void型的子函數,這個子函數要求不需要返回值,也就是這個函數功能不需要返回值的子函數。
這個也是有個返回值的,好像是調用成功返回非零,不成功返回零
第二種是非void型的子函數,這個函數會返回一個定義子函數時類型的一個數值
如定義int f(int m)這個就是返回一個int型的數值
值得注意的是
1、子函數返回值只有一個,不可能返回多個值。
如果需要多個返回值,有兩個解決方案。一是用指針或者數組,
一個是定義子函數參數的時候用指針地址,在子函數中改變主函數變量的內容
2、在子函數中遇到return調用一定會結束子函數的調用,不管下面有多少代碼
其實還有一種返回值,也就是系統(tǒng)自帶的功能函數。也就是頭文件中包含的一些函數
這個是了解內容,其實和子函數的意義一樣(他也是子函數,不過不是你編寫的),可以打開頭文件看功能函數的定義,就知道函數的返回值是什么或者什么類型
這里值得注意的是重要的經常用到的兩個函數。scanf,printf。這個百度一下很清楚
gets和puts也要注意一下,因為經常用到
1、使用scanf函數時,會報錯“返回值被忽略”,是因為微軟認為scanf不安全導致的。
2、將使用的scanf函數替換為scanfs,好像scanf_s只有微軟的編譯器支持。
3、在文件的最開始添加下面一行,忽略安全檢測,不然使用scanf會報錯。
試試:
將第4行改成
double x,y=0;
將第6行改成
if(scanf("%lf",x)==1x0)