上上週社團的課講到了乙個叫eof的東西,但是我沒去聽,所以只能自己來理解了,具體**如下
while
(scanf
("%d %d"
,&a,
&b)!=
eof)
去查了很多資料,發現都講的太深入了(涉及很多概念),可能不太好理解,我這裡不講深入的,直接用通俗易懂的語言來講講這行**到底發生了什麼吧!
首先來說說eof
eof是end of file的縮寫,c語言裡eof這玩意被巨集定義為-1,stdio.h的標頭檔案裡就包含了這個定義,如果巨集定義沒學,那就記著eof就等於-1(雖然我這樣說可能會被打==,因為還不夠嚴謹)
再來說說scanf()的函式
·它的讀取資料的規則如下(先記著)!!!
如果a和b能夠被成功讀入,那麼scanf的返回值就是2
如果只有a被成功讀入,返回值為1
如果a和b都未被成功讀入,返回值為0
如果遇到錯誤或遇到eof,返回值有符號數時為-1
因此scanf()本身就是這個邏輯判斷,能返回邏輯值給while,所以while裡可以有scanf函式,因此這行**的意思就是當while不等於eof時候一直做迴圈
整一行**來解讀
scanf函式還有個讀取規則就是遇到了空格或回車或非法輸入才結束乙個資料的輸入,也就是說當你輸入了第乙個資料按下了乙個空格或者回車,乙個資料就存入了,它就會接著存第二個資料,第二個資料輸入完了,在按下第二個空格或者回車,那麼這時候資料存完了,這時候返回乙個值,那就是2,2不等於eof,因此開始做迴圈,做完了迴圈之後還是沒跑出while,因為你剛剛的值為2,這時候我們開始輸入新的資料,又會產生新的返回值,while又開始做迴圈!!!如果不得到eof那就跳不出去while迴圈
那麼什麼時候才能得到eof呢?答案是用組合鍵然後按 enter 鍵的方式來告訴系統已經到了eof,這樣系統就會結束while啦!
這行**的功能
所以,這行**就可以輸入多組資料並且每次將每組資料用來搞別的事情,具體看我之後的a+b題庫的理解!
第一次寫部落格還不太熟悉csdn裡的markdown,寫到了2點也是沒誰了,所以排版不太行請諒解,貌似這裡的markdown是內嵌了html,以後會好好學習使用的!晚安!
關於c語言中的EOF的理解
計算機術語,縮寫通常為eof end of file 在作業系統中表示資料來源無更多的資料可讀取。資料來源通常稱為檔案或串流。在c語言中,或更精確地說成c標準函式庫中表示檔案結束符 end of file 在while迴圈中以eof作為檔案結束標誌,這種以eof作為檔案結束標誌的檔案,必須是文字檔案...
關於NSRunloop的個人理解
今天看到了nsrunloop,其實之前也有看了關於nsrunloop的內容,在這裡想簡單的就個人的理解總結一下。其實自己在開發的過程當中,還沒有更多的涉及到nsrunloop的功能。總的來說,nsrunloop就是類似於windows的訊息機制。他的存在是給執行緒增加事件處理機制。對於多執行緒開發而...
個人關於指標的理解
指標是什麼?如何理解指標?因為指標是抽象的,所以這裡我把它擬物化,這樣解釋也許跟容易懂。指標的專業解釋是 指標是記憶體單元的編號。說明 以下的黑方框都代表乙個位元組 1 對於記憶體。我們一般認為記憶體的基本單位是位元組,記憶體空間由很多位元組組成的。記憶體可以儲存資料,所以我們把每個位元組當做是乙個...