給予下列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
想請教一下自己那邊的邏輯出了問題
感謝大家的幫忙!!
--
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