判斷語句=和==的不同(神坑)+自增/減運算子的例題(神坑+1)
阿新 • • 發佈:2018-12-19
之前做的PTA有個填空,死也想不出來錯在哪裡 先上題: 我一開始掃了一遍程式碼,發現x只出現在if的判斷語句裡,就覺得x輸入什麼就是什麼值(於是乎我就錯了)
。 。
錯沒關係呀,可是不知道自己錯在哪不就白痴了嗎?我甚至還在想是不是負號“ - ”沒法被錄入(拿不住所以偷偷試了一下,負號可以正常錄入,你們全當不知道好吧 = = )
。
這也許是程式設計小白很容易陷入的一個誤區:判斷語句不會使變數變化 也許在codeblock上是這樣(因為CB上判斷語句不能用賦值“=”,只能用等於“==”)但世界上程式設計軟體多了去了,我們應該從語法角度出發去審視、深思
。
仔細看第二個if語句的判斷語句,你會發現它寫的是:x=0而非x==0 所以當x<0時,執行第二個if語句的時候,x的值就發生改變了
最後答案應該是 。10 。 0
。 。 。
最後再加一個我考試時沒思路直接跳的填空題,有關自增/減的,就當例題用了好吧 先說我自己算的:6 我查查答案先(ing。。。) emmmmm,果然又算錯了,答案是7,但我思路沒錯,如下:
首先()? : 這相當於是個if語句,判斷語句為++a==b–,自增++在a的前面,a先自增在代入運算,所以= =左邊的值為5+1=6,然後來看= =右邊b–,因為–在b的右邊,所以b先代入運算再自減,所以= =右邊的值為6,兩邊相等,所以執行真語句,也就是++a,可是要記住在判斷的時候a已經自增1了,而且這裡++也是在a左邊,所以最後輸出的值應該是(5+1)+1=7 (我就是粗心忘了判斷語句時a已經自增了所以寫了6.。。。)
由此可見,自增/減真的是個大坑,專坑馬大哈。。。