[英]EOF exercise 1-6 K&R The C programming language
這可以直接從K&R書中獲取:
!=
的優先級高於=
,這意味着在沒有括號的情況下,關系測試!=
將在賦值=
之前完成。 所以聲明c = getchar() != EOF
相當於
c = (getchar() != EOF)
這具有將c設置為0或1的不期望的效果,這取決於getchar的調用是否返回文件末尾。 (更多內容見第2章)
練習1-6。 驗證表達式
getchar() != EOF
是0還是1。
我無法理解如何進行此練習以及了解塊引用段落的內容。
我知道EOF是int類型的符號常量,通常保持值-1。 由於負值int在進行比較時永遠不能保持與char相同的值,因此需要將其提升為int,然后以某種方式表示文件的結尾。
我也沒有上面指定的括號進行比較!=
在分配之前完成但是這實際意味着什么? 這個功能發生了什么? 我還打印了EOF的值,它是-1,當它說驗證它是0還是1時,它是什么意思?
這是說:
c = (getchar() != EOF)
意味着從stdin
讀取一個字符,然后將其與EOF進行比較。 如果為真,則結果為1,如果為假則為0。 然后將該結果分配給c
。 讀取的字符丟失,因此“不良影響”。
它希望你以這種方式自己運行它,看看如何通過發送EOF與任何其他角色來產生0和1。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.