1. 程式人生 > >【c++】語言基礎:++i & i++ 的底層區別

【c++】語言基礎:++i & i++ 的底層區別

++i 和 i++的底層區別

  • ++i,是先取 i 的地址,增加它的內容 ,然後把值放到暫存器中
  • i++,是先取 i 的地址,把它的值裝入暫存器,然後增加記憶體中 i 的值

關於 ++i 是左值,而 i++ 是右值的問題

  • ++i,返回值是 i 本身自己,是一個變數
  • i++,返回值是 i 之前的一個數值,是一個數,不是變數

因此 ++(i++) 這就是錯誤的,因為 i++ 返回的是右值,而不能 ++右值。

關於效率

  • i++,會產生臨時變數,效率比 ++i 要低一些,因此推薦使用 ++i。