簡體   English   中英

發布和預增

[英]Post and pre increment

int v=3;
int s=6 + (--v);

int d= --v + --v/s++*v++ + ++s%v--;

有人可以告訴我如何解決這個問題嗎? 最終我得到9%0;

但是編譯器將d的值顯示為1

有人可以告訴我我哪里做錯了

Java而言 ,據我所知, d = 1的值應該是正確的:

  • 編輯:評估是從左到右的順序(正如安迪·特納在評論中所述)
  • ++x x⇒首先增加,然后使用變量
  • x++ ⇒首先使用,然后遞增變量

所以我得到:

int v=3;
int s=6 + (--v); // s=8, v=2

int d = --v // 1
      + --v // 0
      / s++ // 8, s=9
      * v++ // 0, v=1
      + ++s // 10
      % v--; // 0

⇒d d = 1 + 0 / 8 * 0 + 10 % 0 0/8 d = 1 + 0 / 8 * 0 + 10 % 0

根據* / %運算符優先級,您得到

d = 1 + 0 + 0

編輯2:請注意,其他語言可能具有其他評估規則(如@AdaRaider在評論中所述,另請參見我的C ++示例)。

暫無
暫無

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

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