[英]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.