Solc
SOLIDITY:嵌套語句中的賦值運算符行為是否正式化?
事實上,solidity 在嵌套賦值中似乎具有與 C 相同的行為。
即執行下面的範例測試合約,呼叫nestedSum(1) 結果如下:a=38, b=16, c=4
pragma solidity 0.5.1; contract test { uint256 public a; uint256 public b; uint256 public c; function nestedSum (uint256 d) public { a = (b = (c = d + 3) + 12) + 22; } }
文件的某些部分是否描述了這種行為,並且是否保證在編譯器的版本控制中保持穩定?
非常感謝。
鑑於沒有答案,但已經完成了一些評論和一些離線研究,為了清楚起見,我回答了我之前的問題。
簡而言之,答案是官方文件中沒有提到這一點,但鑑於它:
- 由於基於堆棧的計算的自然行為,很容易獲得 2) 編譯器可以毫不費力地接受 3) 在許多情況下允許避免使用臨時變數
沒有什麼比 ‘++k;’ 更奇怪了。或’a /= 2;’ 因為這種簡短的形式完全來自機器的堆棧性質。
但它沒有被形式化為語言的一個單獨元素。