[問題] 這小程式中的bug是怎麼產生的??

看板C_and_CPP (C/C++)作者 (魯拉拉)時間13年前 (2012/10/15 18:36), 編輯推噓3(3022)
留言25則, 7人參與, 最新討論串1/2 (看更多)
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 2010 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 請問一下大家,我剛寫的這程式是讓系統隨機產生1~5的數字然後讓使用者猜 有兩次機會,但我發現如果輸入的不是數字而是英文或符號 它就會直接把程式碼跑完,忽視掉我的條件,請問為什麼這麼神奇?? 程式碼:http://ideone.com/AfxW7 (另外請問一下,void main 和 int main 到底有什麼差??) 餵入的資料(Input): 預期的正確結果(Expected Output): 錯誤結果(Wrong Output): 程式碼(Code):(請善用置底文網頁, 記得排版) 補充說明(Supplement): -- 『Together就是 To + get + her 想要在一起就要 ︿ 去 追 她 \ √ ﹀... 大伙進攻吧! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.242.144.78

10/15 18:44, , 1F
回傳值得型態差異
10/15 18:44, 1F

10/15 18:54, , 2F
那請問我敘述的bug是怎麼產生的???
10/15 18:54, 2F

10/15 19:03, , 3F
你先試試把輸入的結果印出來, 想想看為什麼是那個值
10/15 19:03, 3F

10/15 19:11, , 4F
好吧那個值本身好像沒意義, 不能轉換的時候就是出垃圾值
10/15 19:11, 4F

10/15 19:12, , 5F
我覺得比較有趣的地方是前面的錯誤會導致後面不能cin
10/15 19:12, 5F

10/15 19:12, , 6F
cin(或說 ios 物件)的輸出值只有在 ios::fail() 為否的
10/15 19:12, 6F

10/15 19:13, , 7F
時候才有意義
10/15 19:13, 7F

10/15 19:15, , 8F
可能是因為 若user輸入的內容非數字 第一個cin拿走
10/15 19:15, 8F

10/15 19:16, , 9F
buffer裡 int size的資料後 就繼續執行 第二個cin
10/15 19:16, 9F

10/15 19:16, , 10F
看到buffer還有資料 以為user已輸入 就繼續拿走
10/15 19:16, 10F

10/15 19:17, , 11F
int size的資料
10/15 19:17, 11F

10/15 19:19, , 12F
cin.fail() 不好用嗎 ?
10/15 19:19, 12F

10/15 19:40, , 13F
不好意思....我剛學C++而已,實在無法理解為何非數字它就
10/15 19:40, 13F

10/15 19:41, , 14F
跑掉,不理我的if了
10/15 19:41, 14F

10/15 19:42, , 15F
上面大家的解釋可能要等老師交到才能理解...
10/15 19:42, 15F

10/15 19:44, , 16F
不過想請問uranusjr說的那是什麼意思??
10/15 19:44, 16F
而且連格式也跑掉 = =a http://ppt.cc/6DyP ← 實際圖 ※ 編輯: fumme376 來自: 210.242.144.78 (10/15 19:50)

10/15 19:57, , 17F
我只知道抓你的Code回來跑出亂碼....
10/15 19:57, 17F

10/15 19:58, , 18F
可是我這裡顯示很正常啊?
10/15 19:58, 18F

10/15 19:59, , 19F
非數字不是跑掉,它是持續繼續跑,你把num02的值秀出
10/15 19:59, 19F

10/15 20:00, , 20F
來就知道為什麼會跑另外一段,因為num02和random01不
10/15 20:00, 20F

10/15 20:01, , 21F
相符,程式不讓你輸入num02就繼續跑了~~~
10/15 20:01, 21F

10/15 20:02, , 22F
所以才會印出你還是沒猜中這一段~~
10/15 20:02, 22F
我剛試了一下,假如我輸入a,cout出來的是-858993460 可是那是num01的值,num02為什麼也會抓它?? ※ 編輯: fumme376 來自: 210.242.144.78 (10/15 20:06)

10/15 21:04, , 23F
這邊有相關討論 http://tieba.baidu.com/p/13805621
10/15 21:04, 23F

10/16 16:29, , 24F
10/16 16:29, 24F

10/16 16:29, , 25F
Magic debug values
10/16 16:29, 25F
文章代碼(AID): #1GU-SYUY (C_and_CPP)
文章代碼(AID): #1GU-SYUY (C_and_CPP)