[問題] 面試遇到的compiler邏輯問題
小弟前幾天去面試時,
面試官問了一個optimization的問題(a):
void initialize(Obj* myObj){
myObj->ptr->a = 0;
myObj->ptr->b = 0;
myObj->ptr->c = 0;
}
問我如何optimize這段程式,而我有回答出正確答案(b):
void initialize(Obj* myObj){
ptype* p = myObj->ptr;
^^^^^(假設為ptr指到的type)
p->a = 0;
p->b = 0;
p->c = 0;
}
接下來面試官問,雖然compiler會幫忙做optimize,
但在此例中compiler"不敢"直接把程式(a)compile成程式(b),
因為有出錯的可能,問我為什麼?
面試官並假設假設不會因為signal等原因而有interruption,
也跟compiler內部運作無關,只是單純邏輯上的問題。
我答不出來,也沒有什麼頭緒,可以請板友幫忙解惑一下嗎?感謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.162.99.11
※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1420429398.A.5FE.html
※ 編輯: penknifelee (1.162.99.11), 01/05/2015 11:45:13
→
01/05 11:55, , 1F
01/05 11:55, 1F
→
01/05 11:57, , 2F
01/05 11:57, 2F
→
01/05 12:00, , 3F
01/05 12:00, 3F
→
01/05 12:00, , 4F
01/05 12:00, 4F
→
01/05 12:01, , 5F
01/05 12:01, 5F
→
01/05 12:03, , 6F
01/05 12:03, 6F
→
01/05 12:09, , 7F
01/05 12:09, 7F
→
01/05 12:10, , 8F
01/05 12:10, 8F
→
01/05 12:15, , 9F
01/05 12:15, 9F
→
01/05 12:18, , 10F
01/05 12:18, 10F
→
01/05 12:20, , 11F
01/05 12:20, 11F
推
01/05 12:44, , 12F
01/05 12:44, 12F
→
01/05 12:45, , 13F
01/05 12:45, 13F
居然可能是一樣的啊@@
那我也不知道面試官要的是什麼答案......
現在才知道gcc能夠給出assembler,又學一招,
感謝!
※ 編輯: penknifelee (1.162.99.11), 01/05/2015 14:19:44
推
01/05 14:23, , 14F
01/05 14:23, 14F
→
01/05 14:49, , 15F
01/05 14:49, 15F
→
01/05 21:04, , 16F
01/05 21:04, 16F
推
01/05 23:30, , 17F
01/05 23:30, 17F
→
01/05 23:34, , 18F
01/05 23:34, 18F
→
01/05 23:34, , 19F
01/05 23:34, 19F
→
01/06 11:54, , 20F
01/06 11:54, 20F
→
01/06 11:57, , 21F
01/06 11:57, 21F
推
08/29 20:58, , 22F
08/29 20:58, 22F
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):