精華區beta C_and_CPP 關於我們 聯絡資訊
※ 引述《linjack (嗯)》之銘言: : Note that both of these examples have unspecified behavior in C, : according to the ANSI/ISO standard. : 上面那兩個例子和 i = i++; 或是 cout << i + i++; 之類都是類似的狀況, : 我認為可以說是在 Java 中這種詭異兼無聊(?)的操作有被明確定義 order, : 但是 ISO C/C++ 標準中「有明確定義這種操作會造成未定義行為」 : 未定義行為就是做 compiler 的人說了算。 : 不知道為何台灣的大學教授特愛考這種東西,點點點。 這裏例子還差一點才到達那個所謂未定義行為, z++ + z 對z只打算更新一次. 十誡第十條所指的必須是在同ㄧexpression打算更新同一變數二次以上. 那才有未定義行為. 前文Java例子都是這種寫法,但是 cout << i + i++ 並不在這情況內. 看過Java的規格,感覺是Java並不需要那種複雜的寫法, 但由於語法相同,許多人會以C的習慣寫Java程式. 不過,Java不需要像C的漂亮寫作技巧, 寫 z++ + z 與寫 z++, z+z 意思是一樣. (補註: 這一句講錯了; int t=z++,t+z才對) 這蠻重要的,要不然會有些誤以為Java容易的傻子, 其實對基本的statement語意都搞不清楚. 倒想知道外頭那些覺得面試不該考這樣的,是不是Java都寫得順利? -- pTT:灌C可以搞阿嬌啊? :我的Visual C++光碟哪裏去了? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.160.114.86 ※ 編輯: oohay 來自: 218.160.114.86 (02/03 17:02)
oohay:這一篇說z++ + z是z++,z+z的講法,是錯的. 02/03 17:26
※ 編輯: oohay 來自: 218.160.114.86 (02/03 17:28)