[問題] 有關C的問題

看板C_and_CPP (C/C++)作者 (MJIB)時間15年前 (2010/12/06 20:17), 編輯推噓1(1012)
留言13則, 6人參與, 最新討論串1/1
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) 最近看到一個C語言題目,有點不解 麻煩高手鄉民們解答 希望得到的正確結果: 程式碼在下面,其選項包括 1.本程式編譯時,編譯器(Compiler)發出錯誤訊息,不能執行而無輸出結果產生 2.本程式執行時,發生錯誤,故無輸出結果產生 我用compiler跑過,輸出視窗會出現"已經停止運作"訊息 代表有過編譯,執行時確實會出現問題 所以答案是2 程式跑出來的錯誤結果: 此程式本來就會有錯誤,只是想知道編譯錯誤或是執行錯誤的區別 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) Dev-C++ 有問題的code: (請善用置底文標色功能) #include <stdio.h> main() { int m1=123, m2=5; while (m2--) { m1 %= m2; }; printf(“%d\n”,m1); } 補充說明: while裡面應該是布林運算式,且{}後面接一個分號(;),似乎不合理 所以我認為答案是1(就是語法錯誤) 但實際run過,答案是2 我想問的是,如果考試出現類似題目 要如何判斷是否執行時會出現問題?(難道只能真正執行才會知道) 第一次PO文,且是程式門外漢,請多多包涵 ^^ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.160.114.74

12/06 20:18, , 1F
while裡面應該是布林運算式 => 非零為真
12/06 20:18, 1F

12/06 20:19, , 2F
且{}後面接一個分號(;) => 這無所謂,接100個也行
12/06 20:19, 2F

12/06 20:20, , 3F
可能是執行到m2為0時會出錯,因為不能跟0取餘數
12/06 20:20, 3F

12/06 20:21, , 4F
樓上正解,我執行顯示「Floating point exception」
12/06 20:21, 4F

12/06 20:23, , 5F
所以有過編譯 且文法沒錯嗎? 只是執行時如3F大所說的?
12/06 20:23, 5F

12/06 20:23, , 6F
你都試過囉 這個程式的語法是正確的
12/06 20:23, 6F

12/06 20:25, , 7F
C 的分號就像你寫文章時的換行, 換再多和文章內容也無關
12/06 20:25, 7F

12/06 20:25, , 8F
恩 了解 謝謝以上回覆
12/06 20:25, 8F

12/06 20:34, , 9F
%0會rum-time error
12/06 20:34, 9F

12/06 20:35, , 10F
(坦白說在這篇文章之前,我不知道%0會出事 0rz)
12/06 20:35, 10F

12/06 20:36, , 11F
就跟/0一樣... 我曾經GCD找很久的bug...就是%0...
12/06 20:36, 11F

12/06 20:51, , 12F
了解 謝謝囉 ^^
12/06 20:51, 12F

12/06 21:02, , 13F
多的分號俗稱"空語句"也就是只有句點的句子 XD
12/06 21:02, 13F
文章代碼(AID): #1C_DHELp (C_and_CPP)
文章代碼(AID): #1C_DHELp (C_and_CPP)