下面是傻瓜博主“曾經”犯過的錯和一些心得: ? つ ?_? ?つ
1.要想流程控制學好,一定要學會化繁為簡,舉栗子:
三目運算子 (略?略:略)---就是一個數字嘛,所以它用起來和一個“1”有什么區別?沒有區別(語氣加重);
定義函式() ---它既然在其他函式中被呼叫了,那么它和外界(呼叫此函式的函式)互動的資訊或者說是操作只有兩種情況:
(1).定義函式中存在printf()函式,會對外界輸出()中的資訊,所以可以將定義函式當成一個printf()函式;
(2).此定義函式屬于有回傳值的型別且存在回傳值,這樣它就可以通過向外界傳達 false /ture(通過外界函式的if()來 翻譯識別),所以可以將定義函式看成 ture /false;或者向外界傳達它的回傳值(比如通過外界 的printf函式來輸出其回傳值),所以可以將定義函式看成一個 ? (取決于你在定義函式中寫的回傳值是什么);
其實根據流程控制來最簡單粗暴的看懂代碼的方式就是:把自己當成一個編譯器,以每一個字符當作一個單位,嚴謹且嚴格遵循順序及語法規則地把代碼在腦中或者紙上”跑一遍“(再小的流程也不要跳過),這樣”跑“一遍下來,看不懂代碼??不好意思臣妾做不到 ~ ~
2.break 與 cotinue 與 return的區別:
break:只針對并終結 switch 或 回圈陳述句,所以說如果break在 for回圈 里,那么在編譯器成功識別到它的情況下,此break后的所有屬于回圈內的代碼全部失效;它對 if else等陳述句沒有作用,他會從內而外的尋找 swich / 回圈陳述句,那一直到函式最外層都沒有找到怎么辦呢,那不好意思,此break不合法,獎勵報錯 X 1;一個break只能干掉一個 switch / 回圈陳述句;
continue:continue 陳述句很像 break 陳述句(),唯二不同的是:第一,continue 不能作用于 switch ;第二,執行完 continue 后,會跳到”重新判斷是否繼續回圈”的步驟;
return:它就更簡單了,終結函式滴,針對離它距離最近的函式,同理如果編譯器成功識別了 return ,那么 rerurn 后的所有在此函式中的代碼全部失效;
3.if()只能操控一個陳述句的是否執行,所以對多行代碼執行進行選擇時,需要用 { } 罩上,不過我平常限制一行代碼的時候,也會罩上,感覺可讀性更高了呢;
4.”A“ 正確,因為其中有一個隱身的 \0
”AA“ 正確
‘A’ 正確
‘AA’ 錯誤, ’ ‘ 只能裝單個字符
5. ....... 我以為會報錯(’a‘與’2‘之間的是賦值符而非判斷符),但其實輸出了 2
if(a=2) 雖然if的作用是接受真偽并做出選擇,但是當編譯器看到”a=2“時,也還是毫不猶豫把”2“賦值給了 a
a+=1;
printf(”%d“,a);
6.無論是”++i“還是”i++“最終都對變數 i 進行了加 1 的操作,二者區別在于賦值時:
”++i“ 是先對變數 i 進行了加一的操作,再進行將(i+1)賦值的操作;
”i++“ 是先對變數 i 進行了將(i)賦值的操作,再進行對變數 i 加一的操作;
7.switch 與 if 陳述句的選擇問題:在針對一個“數字型別”或是”字母型別“進行并列式的選擇時,用switch會稍好一些,最典型的栗子 --- 一個簡易的兩數運算計算器;不知道用哪個的時候,還是用 if 邏輯性更強一點;
8.由于陣列【i】指的是陣列中的第 (i+1)個元素,所以將其應用到回圈陳述句時一定注意不要踩坑;
9.if(0<x<100) 錯誤 ; if(0<x&&x<100) 正確;
10.無論是 while 回圈還是 for 回圈一定要構建好退出回圈的條件(忘記對“i”操作只會陷入死回圈);
11.取余符號 “%” 兩邊只能是整型,這句話臣妾已經說累了,可是陛下還是記不住(手動狗頭);
博主呢,似一只大一的小菜雞,歡迎各位前輩指出文章的錯誤或是不足之處 (~ ̄(OO) ̄)ブ
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/338898.html
標籤:C
