1樓:「已登出」
舉個例子
讓題主去打醬油,大概會有三種結果
1 打到醬油了
2 醬油賣完了
3 錢不夠
我們就約定,打醬油函式返回的結果為三個不同的數,分別表示三種不同的結果。
作為發號施令者(呼叫者)我不關心具體買醬油的細節(在哪個店買什麼牌子的醬油等),我只關心結果。
所以結果就是約定好的,用來檢查(了解)函式執行是否正確的(買到還是沒買到,為什麼沒買到)的依據
這麼說應該了解了吧。
關於整型範圍的問題。我覺得大概是因為認知差距導致題主沒得到自己想要的結果吧。因為只要了解負數的表示方式這個知識點的話,很容易就明白0出現了正負兩個。
題主只是欠缺了這個知識點,因為知識結構的差異,不同的人對同乙個提問內容的理解不同罷了。你的老師和學長說的也並沒有錯。
計算機專業並不是專門學程式語言的專業,基礎知識很重要,計算機組成原理,計算機基礎等等,才是最重要的,程式語言只是工具。
畢竟文章寫得好並不是因為認識的字多,精通的語言種類多,而是因為能夠零活應用語言來表達自身的思想和情感。
希望樓主繼續加油,多注重基礎知識。C語言裡遇到的問題,大多從計算機組成原理裡都能找到答案。
2樓:陳舸
C語言函式的返回值一般兩個用途。
把計算結果通過返回值返回給呼叫者
標註函式的呼叫是否成功
總之都是為了給呼叫方提供一些資訊。當然,有的函式不需要給呼叫者提供任何資訊,這個時候一般會用void表示函式不返回任何資訊給呼叫方。
對於用途2,這個時候實際上是呼叫者和被呼叫的函式之間形成一種契約關係。通常來說,一般返回值0表示呼叫的函式執行成功,用其它的值表示遇到了錯誤,這個值就是錯誤碼。這種0表示成功,非0就是有錯的定義,是一種約定俗成的方式,基本上大家都這麼幹。
但是如果你偏不這麼定,也沒有問題,只要你和呼叫方約定好一種規則就沒問題,這就是呼叫者和被呼叫者之間的契約。
所以返回值是可以任意指定,但呼叫方對返回值的理解必須和函式的定義者保持一致,此為契約。
3樓:fduxiao
C返回值一般是放入accumulator然後呼叫者從暫存器讀出,如果型別大小超出通用暫存器大小則在呼叫的時候多壓入乙個呼叫者分配的記憶體位址,返回的時間相對於記憶體複製,簡單來說題主可以理解為沒有返回值然後每次都多乙個指標引數,然後你可以隨意DIY這個指標......
4樓:ijrys
返回值就是乙個運算結果,你又搞到int範圍上幹啥f(x, y)= x^2+y
f是個函式,值域就是全體數集,c語言的和這玩意乙個樣,扯那麼多幹啥比較特殊一點的函式比如這個:
f(string x)=以x為學號的學生
那麼f的返回值就是個學生
總的來說就是愛咋咋
還有,你到底是問函式的返回值還是主函式的返回值主函式返回值一般約定下為正常執行的話返回0,出現錯誤後返回非0,具體是幾你隨便。你可以先約定好出現什麼問題返回幾這樣,然後使用者或是呼叫你程式的那個程式就可以根據返回值判斷問題原因。當然,現在這個一般都不用了
還有那個int範圍的問題,-32767—32767中有32767個負數,有32767個正數,還有個0,加起來和65536差了乙個,你的範圍和課本上的就差了一-32768,之後瞎搞都能搞出來,我不造你為啥就能讓這個位置卡住
能不能詳細解釋C語言中main返回值,一部分編譯器用void為什麼會報錯?
劉巨集宇 C Reference Manual 5th,Samuel P.Harbison III Guy L.Steele Jr. gesturewei main返回值用於返回當前程式的退出值,與exit函式的引數一樣的作用,事實上大部分c執行庫做的就是exit main argc,argv 這個...
c語言如何定義沒有返回值的main函式
張浩 永遠都應該寫成int main void 或者int main int argc,char argv void main?不知道從哪傳出來的寫法 穀雨同學 無論如何,使用void作為返回值型別的main函式都是不符合標準的。請在任何情況下都避免這樣寫。但是main函式可以不寫return語句,...
C 將返回值為引用有什麼作用?
可以返回函式中的靜態變數,它在程式結束後被自動釋放可以返回 this,以實現諸如a b c這樣的賦值運算返回右值引用以延長臨時變數的生命週期 返回程式中的全域性變數 黃色的香蕉 其實都一樣,只是場景賦予不同意義。返回指標,代表返回值可能為空,外部需要判斷異常。返回引用,代表該值一定是有效的,因為引用...