切入正題,答案是「s是20,t不能確定」。 我瞭解s是20的部分,但爲什麼t不能確定? 請幫幫我!考慮下面的代碼:「int s = 20; int t = s ++ + --s;」。 s和t的值是什麼?
回答
int s = 20;
int t = s++ + --s;
工作:增量(增量後)s到21(當前值20)+遞減(遞減)s到20(當前值20)。
So, t=20+20;
And s =20;
考慮到優先級和圓括號後,Java保證表達式將從左到右進行評估。例如,要評估eat()+ drink() - beMerry(),Java將首先評估eat(),然後drink(),然後執行加法,然後評估beMerry(),最後執行減法。 eat()在drink()之前被評估,因爲eat()在drink()的左邊,並且表達式從左到右被評估。這種保證是重要的,因爲eat()和drink()的調用可能有副作用,如果以相反的順序調用,副作用會有所不同。
你可能想解釋一個小_why_你正在計算,因爲你這樣做(即從左到右,而不是左到的例子) – 2013-02-11 07:28:45
@JoachimIsaksson我編輯了我的答案,如你所說。謝謝 – 2013-02-11 10:07:29
讀this:
由於遞增/遞減操作者修改其操作數,使用的 這樣的操作數多於一次相同的表達式中可以產生 不確定的結果。例如,在諸如x - ++ x的表達式中,不應以什麼順序執行減法運算符和增量運算符 ,這是不清楚的。當編譯器應用 優化時,這種情況會變得更糟,這可能會導致 操作的執行順序與 程序員的預期不同。
現在,你的答案應該很清楚。 在我看來,t的值可能因編譯器/優化而異。
下面是更多的一些信息: http://www.gnu.org/software/gnu-c-manual/gnu-c-manual.html#Sequence-Points-Constrain-Expressions
這個答案適用於C/C++,但不適用於Java。 http://stackoverflow.com/a/4978933/477878 – 2013-02-11 07:12:30
- 1. s = s + s和s + = s之間的區別短
- 2. 在Perl中,s/^ \ s + //和s/s + $ //有什麼區別?
- 3. Pandas group by weekday(M/T/W/T/F/S/S)
- 4. s ++和* s ++有什麼區別嗎?
- 5. \ s和\ t有什麼區別?
- 6. 什麼!s || !*的意思? (S是char *)
- 7. 爲什麼下面的代碼打印出「S更大」,即使s更小?
- 8. IIS cgi:「%s」的含義是什麼%s
- 9. 爲什麼不是[\\ s *]等同於\\ s *?
- 10. 「無法推斷(MARRAY(STUArray S)INT(ST S))從上下文()」 將runST
- 11. Emacs revert-buff(s-u):什麼是s-u?
- 12. 「pacman -S」中的「-S」代表什麼?如果是這樣,什麼?
- 13. 什麼是「S」,在「故宮我-S」
- 14. 什麼是#用%s
- 15. char * s和char * s有什麼區別?
- 16. 考慮邊緣權重的最小s-t邊緣切割
- 17. 如果存在從S到T的身份轉換,那麼S和T是否是同一類型?
- 18. 這是什麼意思<S extends T> save(S entity);在Spring Repository中?
- 19. 差(/ \ S /)和$ .TYPE(/ \ s /)
- 20. * t ++ = * s ++;字符串拷貝
- 21. SVG路徑命令「s」和「t」
- 22. string s; &s+1;法律? UB?
- 23. 什麼是NamedPipeServerStream和NamedPipeClientStream(s)?
- 24. 什麼是%s和%d?
- 25. Golang什麼是「%!s」
- 26. 正則表達式\\ s *,\\ s *做什麼?
- 27. 的Java:(INT)(浮點)Float.valueOf(S)或Float.valueOf(S).toInt()
- 28. Apache-Error:[file「apache2_util.c」] [line 271] [level 3] [client%s] ModSecurity:%s%s [uri「%s」]%s
- 29. printf(「%s」),printf(「%ls」),wprintf(「%s」)和wprintf(「%ls」)有什麼區別?
- 30. [\ s \ S] *之間的區別是什麼?和。*?
你在哪裏找到你給的答案嗎? – 2013-02-11 06:57:43
't'可以確定:http://ideone.com/6ja0Kv – 2013-02-11 06:57:58
您是否想過,哦,我不知道,試試看看? 「不能確定」是......廢話。 – 2013-02-11 06:59:22