簡體   English   中英

關於增量運算符的優先級

[英]Regarding priority of the increment operators

據我所知

int i = 10;
int j = 5;
j += ++i; //j = 16, i = 11 (first i increments and then adds to j)

int i = 10;
int j = 5;
j += i++; //j = 15, i = 11 (first i adds to j and then increments)

C 簡而言之表 5-4(運算符優先級和關聯性)中,它說后綴運算符 ++ 優先於一元運算符 ++,我不明白,因為相反的是我之前寫的。

桌子

為什么?

運算符優先級/關聯性僅說明 C 代碼的解析順序。 這與代碼的執行方式無關1)

這意味着如果你有像*p++這樣的東西,它相當於*(p++) ,因為后綴 ++ 優先於一元* 但是當稍后執行該代碼時,memory 位置*p將首先取消引用,然后p的地址增加 1 項。

這反過來又是因為后綴 ++ 遵循一條規則,即“結果的值計算在更新操作數的存儲值的副作用之前排序”。


1)考慮一個數學方程,例如: a * b + c * d - 數學中的運算符優先級,C 迫使您將其計算為(a * b) + (c * d)但它沒有告訴您任何關於您是否應該在c * d之前或之后計算a * b

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM