2
A
回答
3
不要這樣做!該代碼在MATLAB和Octave中均有效,但行爲非常不同。
MATLAB:
你的代碼實際上是有效 MATLAB代碼。但是,它不符合你的期望。
在很多語言中,++k
的意思是增加k
並返回它。在MATLAB中,++k
與k
相同,因爲在MATLAB中:3 == +3 == ++3 == +++++++3
。 --k
也是如此。這是--k == -(-k) == +k == k
。同樣,在很多語言中,k++
意味着返回k
,然後增加它。然而,在MATLAB中,k++
和k--
無效語法並導致語法錯誤。
您的代碼(在MATLAB)等效於:
print_factor(p(k), p(k));
測試的代碼中MATLAB具有兩個示例功能p
和print_factor
:
p = @(x) 2*x;
print_factor = @(x,y)disp([x,y]);
k = 2;
print_factor(p(++k), p(--k));
4 4
k
k =
2
八度:
在Octave中,操作符被定義,並從左向右評估,但我不認爲official documentation關於增量運算符說什麼關於這個。它可能與平臺有關,就像C++一樣。但是,可能會以與評估其他表達式相同的方式進行解釋,請參閱底部的示例。
您可以在線測試here。
完全相同的代碼在八度:
p = @(x) 2*x;
print_factor = @(x,y)disp([x,y]);
k = 2;
print_factor(p(++k), p(--k));
6 4
k
k = 2
print_factor(p(++k), p(++k));
6 8
k
k = 4
正如丹說:在編寫代碼八度不遵循MATLAB的語法是不是一個好主意。如果你想在MATLAB中運行它,你將不得不重寫它。
相關問題
- 1. 從左到右評估
- 2. 從右到左評估,從左至右鏈方法
- 3. 依靠Python函數參數評估順序安全嗎?
- 4. 在matlab中評估函數
- 5. Javascript函數參數評估
- 6. 函數參數未評估
- 7. python賦值嚴格從右到左進行評估嗎?
- 8. 從左到右或倒數的算術表達式評估?
- 9. Java:僅從左到右評估數學表達式
- 10. Javascript - 再次評估參數
- 11. Haskell函數從左到右
- 12. 使用參考參數評估函數
- 13. Matlab評估和操作函數
- 14. 在matlab中評估函數的值
- 15. 在MATLAB中評估和繪製函數
- 16. 評估函數
- 17. 匿名函數的力參數評估
- 18. c函數參數評估順序
- 19. c函數參數評估和傳遞
- 20. Angular.extend評估無參數函數
- 21. 評估MATLAB二次型rBform
- 22. 從右到左讀的參數
- 23. 所有評估是否從左到右發生?
- 24. Bootstrap 4從左至右依次展開
- 25. 從字符串評估數學函數
- 26. 從評估的JS獲取函數名稱及其參數Rhino
- 27. 數學從左到右
- 28. 使參數化函數返回一個函數來評估
- 29. 在R中評估函數之前將函數改爲參數?
- 30. 如何從左到右和從右到左遍歷數組?
'x ++'在MATLAB中是無效的語法。 –
這不是MATLAB的語法,我建議不要在Octave中使用它,因爲你會殺死MATLAB的兼容性而沒有真正的優勢。 – Dan