106關務 程式語言概要考古題請益 - 考試

Table of Contents

給予下列C程式
int calculate(int *j)
{
*j+=5
return *j;
}
void main()
{
int y=3;
y=y+calculate(&y);
}

請求出main()中語句y=y+calculate(&y)執行完後之y值
(1)運算元從左到右評估
(2)運算元從右到左評估

第一題--我的邏輯是calculate(&y)參數傳遞是傳址
所以運算完後的結果y的值會改變,從左到右評估的話是從左邊的運算元開始做
所以會變成 3+8=11
第二題照同邏輯的話是 8+8=16
我有上機執行這段程式碼 得到的答案是16
但參考書上的解答第一題答案是 8 第二題是 6
想請教一下自己那邊的邏輯出了問題
感謝大家的幫忙!!

--

All Comments

Frederic avatarFrederic2018-03-04
第一題11 第二題16 吧?
Emma avatarEmma2018-03-09
找到的答案都是8跟6,想說請問看看是不是哪邊邏輯出錯
Ethan avatarEthan2018-03-11
程式語言除了高點的答案其他都黑白亂寫!可惜他們不寫
關務答案,所以不要懷疑自己的答案XD
Ophelia avatarOphelia2018-03-13
可是高點這題 答案是8跟6
Dinah avatarDinah2018-03-18
如果樓上是指胡世雄的書我是沒研究過那本,我指的是高點
官網寫的考古題答案喔!
James avatarJames2018-03-22
然後我也寧可相信上機跑的答案,這題真的怎麼看都是傳址
阿8跟6不知到怎麼算出來的…
Kristin avatarKristin2018-03-24
然後我記得之前也有發生過補習班交的(金乃傑)跟胡世
雄的書有出入,最後是金乃傑是對的喔!
Candice avatarCandice2018-03-25
感謝大家的回答! 那這題應該是11跟16沒錯了