作者StubbornLin (Victor)
看板C_and_CPP
標題Re: [問題] 面試遇到的一個問題
時間Sun Feb 3 19:37:04 2008
※ 引述《necole236 (necole236)》之銘言:
: : 喔對,自己也搞得很混淆, Java的 z++ + z
: 我有疑問.. 為什麼程式要用這種奇怪令人混淆的寫法呢?
: 這根本是大有問題吧,這麼做一點意義都沒有
: 如果簡單成清楚一點,那應該好多了吧
: 考試考這種題目真的很奇怪,如果我是老闆,我會把寫出這種程式的人開除
因為他們自為考考生他們認為"該懂的知識"
但是卻常常鬧笑話,寫出行為未定義的code
不知道這些教授們是與業界絕緣還是怎樣
也不想想這樣的code在業界寫出來的會被開除
(至少我也一直這樣認為,讓我看見寫這種= =||)
i = i++ + ++i;
這是最典形的考法,我已經看過三次
還看過更誇張的,一堆參在一起,然後還問你執行後結果多少的蠢蛋問題
研究所的考題...不誇張,就是那麼神奇= =
我記得好像還是國立的
國立研究所的考題,就可以想見有多少不食人間煙火
與實務完全隔離的教授 囧?
個人認為會寫這種碼大概只是想賣弄他懂運算順序
好像這樣考比較有"程度"
可是卻曝露出他不懂得行為未定義這回事
還有他對於++到底是什麼時候發生的,也根本沒搞清楚就亂考一通
老實說我原本也不知道有這回事,對於C++的規格書也沒仔細看過
可是在不違反一些大原則之下寫出來的程式根本就不會出現這種垃圾碼
最基本的 KISS原則,Keep it simple and stupid? 是這樣寫的嗎?
反正就是盡量保持簡單,那種賣弄對運算順序的程式碼
讀時還得翻書查運算順序的程式碼,根本就大大的違反這樣的原則
我個人都一直這樣認為,運算順序根本就沒背的必要
只要知道有這樣的規則就好,想先算的就管它三七二十一全部括起來
這樣讀的人不用背、或翻書知道優先順序也能一眼看懂
我還看其它垃圾碼考法,一個struct,大略長得像這樣
詳細的我忘了,只是靠印相亂打
struct s{
unsigned long a:4;
unsigned long b:2;
unsigned long c:6;
// ....
};
然後接下來是一大堆用指標下去取值 設值之類的
"百分百 寫出來包你被開除的程式碼"
= =||
然後我讀了半天,我終於明白他到底想考什麼
他想考的是記憶體資料存放在記憶體中byte的順序會倒過來的觀念
可是我不明白寫那些垃圾碼是什麼用意= =||
而且我記得有些電腦似乎是順著放的?
所以為什麼就不能設計個正常點的題目
非得寫一些垃圾碼來考學生呢? 囧||
拜託不要再盡寫些垃圾碼來考學生
要考得有"程度"也不是這樣... orz
--
VICTOR工作室
http://www.kinmen.info/vic/
程式設計教學
http://victorlin.serveftp.org/programming/
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.116.65.223
推 iseeyoutw:個人100%贊成你的說法由其是KISS 說法. 02/04 11:07
→ iseeyoutw:要是我的同事也這樣寫程式.我也很想罵一罵他. 02/04 11:09