![](/img/trans.png)
[英]When exactly is the postfix increment operator evaluated in a complex expression?
[英]Equal operator in Postfix expression
我正在用C ++評估postfix
表達式。 一切工作正常,但我沒有正確管理=
equal運算符。
導致中綴表達式的問題看起來像這樣: A = 2 + B = 5
其中A和B是變量。 我的程序將其轉換為后綴為: 2 5 = B + = A
在我的程序中,我寫道, if current element is an equal operator followed by a variable then move the result in that variable.
這不是正確的方法,因為我的程序在解決上述表達式后給出B = 5
和A = 7
,這從表達式看來似乎是錯誤的。
我應該遵循哪種技術來處理代碼的相等運算符?
就像評論說的那樣,您得到的答案與規則一致。 如果當前元素是一個相等的運算符,后跟一個變量,則將結果移動到該變量中 。
但是,該規則中有某些東西會破壞后綴符號的統一性,因此我寧願建議將該規則更改為
如果當前元素是賦值運算符,則將第一個操作數(所有)移動到第二個操作數(變量)
為了使此規則適用,您必須驗證最后一個標記(第二個操作數)是否為變量。
我提出的規則與其他操作一致。 例如,后綴表示法3 4 +
轉換為3 + 4
因為到掃描儀讀取+
,它將采用最后兩個操作數3
和4
並將它們求和: 3 + 4
。 以同樣的方式進行3 4 + A =
的操作,首先將3 + 4
保存為第一個操作數,然后A
作為第二個操作數,最后將第一個操作數移動到第二個A = 3 + 4
。 相反,您設計分配規則的方式很特殊,因為它首先讀取運算符=
,然后讀取第二個操作數A
,這將起作用,但與其余操作的方式不同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.