→ oohay:這一篇說z++ + z是z++,z+z的講法,是錯的. 02/03 17:26
※ 編輯: oohay 來自: 218.160.114.86 (02/03 17:28)
※ 引述《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)