引用:
作者: a40136
哈大:
書上是用getchar以及char去存使用者Input,是用ASCII去存,所以拿使用者輸出去減 '0' (注意這裡是指字元而非整數),就會取得差也就會是轉成整數了。
您的寫法要注意一點是您無法預估使用者會不會搗蛋,輸入超過臨界<1 >10的值而導致程式產生不可預期的狀態,範例就有輸入num做檢驗(num>=0 && num<10),這方面是比較好的做法,"永遠"不要相信使用者的輸入。
|
了解,剛才我再測試一下我的寫法,果然在某些情況下會出錯。例如我輸入1000000就會當掉,或者輸入a or ccc or g等非數字,結果全得到zero的結果。
而書上的範例則只容許0 to 9,沒有機會讓你打出10以上的數字,若打非數字則不顯示結果,但依然return 0,不會當掉。
看來我還是得再研究一下書本範例的邏輯推演,依我自己的直覺的邏輯推出來的確實有誤。十分感謝。
但拿使用者輸出去減 '0',這一點我還是搞不懂why doing so?