两个吃奶一个添下面视频_人妻第一页香蕉网_欧美xxxx少妇_妺妺窝人体色www婷婷

  • 歡迎訪問C語言網www.sztianhecheng.cn 比賽欄每月有獎月賽!舉辦比賽聯系QQ:2045302297
  • 問題反饋、粉絲交流 QQ群327452739 藍橋杯訓練群:113766799 申請群時請備注排名里的昵稱
  • C語言研究中心 為您提供有圖、有料、解渴的C語言專題! 歡迎討論!

《黃老師問答筆錄》之C語言常見易錯問題

編程經驗 CTO 20159次瀏覽 3個評論

以下摘自黃老師課堂日常答疑、與學生交流的真實問題總結,為了便于入學者學習查閱,總結歸納于此。

 

1、問:我想判斷一個數字是否在一個區(qū)間里,比如if(90<a<100)可以嗎?

?黃老師答:答案是不可以的! 關系運算符無論是大于小于還是不等于等等,都屬于雙目運算符,即參與運算的對象是兩個。兩個條件需要兩個表達式分開表達,用邏輯與鏈接,即90<a && a<100。

學生追問:那為什么這樣寫編譯器并且沒有報錯呢?

黃老師答:90<a<100這個表達式的意思對于編譯器看來是看成一個復合表達式,即(90<a)<100,語法上來講是合法的,編譯器會算計算90<a的值是真是假,即1或0,再于100進行比較,語法上是完全解釋的通的,但if里這個表達式的值基本可以肯定恒成立了,因為無論90<a的結果如何,不是1就是0,但一定小于100!

 

2、我想判斷一個變量是不是一個數字,比如判斷a是否是99寫成if(a=99)不對嗎?

 

黃老師答:在C語言里,判斷兩個值是否相等要用到算數運算符==! 一個等號=意思為賦值,兩者意義完全不同,切勿混淆!

學生追問:

那這樣寫不可以,為什么編譯不報錯呢?

黃老師答:答案是在if的括號里,a=90這個表達式被編譯器看來是一個值,也就是90,即與if(90)沒有什么區(qū)別,僅多一個賦值(把90給a)的副作用。所以完全合法!只不過現在恒為真了!

 

3、循環(huán)沒有輸出

我寫while循環(huán)

while(1);

{

????????? printf(“Hello www.sztianhecheng.cn\n”,a);

}

這樣寫循環(huán)可以嗎?問為什么沒有輸出呢?

黃老師答:while循環(huán)語法不夠扎實,請注意while循環(huán)的小括號后面不需要分號!這樣寫雖然編譯器認為可以,但已經沒有把花括號里的

printf(“Hello? www.sztianhecheng.cn\n”,a);

作為循環(huán)體看待了!

學生追問:為啥?

黃老師答:因為while小括號后面的分號雖然寫這里編譯不會報錯,但單獨的一個分號就是一個空語句,會被編譯器認為是緊跟while后面的一個整體,即會被以假亂真被當做”循環(huán)體”看待,自然形成死循環(huán)+空語句的CPU“瞎忙”狀態(tài),執(zhí)行不了printf(“Hello www.sztianhecheng.cn\n”,a);語句!

 

4.比較兩個字符串怎么寫?if(str1==str2) 對嗎?

黃老師答:不可以!比較字符串核心是比較兩個字符串的內容,可以參考使用strcmp函數。但不可以用數組名直接比較!因為數組名表示的是數組首元素的地址!

 

學生追問:那就是說這么比較不是在比較兩個數組的內容?

黃老師答:對,而是比較兩個地址,是沒有用的!

 

 

如果您有什么好問題,歡迎聯系我們!

后續(xù)將繼續(xù)更新!

C語言網提供「C語言、C++、算法競賽」在線課程,全部由資深研發(fā)工程師或ACM金牌大佬親授課,更科學、全面的課程體系,以在線視頻+在線評測的學習模式學習,學練同步,拒絕理論派,真正學會編程!還有獎學金等增值福利等你!

C語言網, 版權所有丨如未注明 , 均為原創(chuàng)丨本網站采用BY-NC-SA協(xié)議進行授權 , 轉載請注明《黃老師問答筆錄》之C語言常見易錯問題!
喜歡 (146)
[jinyangH@aliyun.com]
分享 (0)
發(fā)表我的評論
取消評論
表情

Hi,您需要填寫昵稱和郵箱!

  • 昵稱 (必填)
  • 郵箱 (必填)
(3)個小伙伴在吐槽
  1. 干貨干貨!謝謝黃老師
    小子2017-04-27 17:12 回復
  2. 黃老師牛逼
    飔下獨角獸2019-08-03 17:53 回復
  3. 嗯,好呀
    愛吃橘子上火2022-10-04 11:40 回復