任何人都可以解釋爲什麼這樣的調用不會增加我的i
值嗎?在方法調用期間賦值並遞增值
int i = 0;
list.get(7 + (i = i++));
list.get(7 + (i = i++));
離開i=0
,而不是增加一個至少使得在第二叫它爲1
任何人都可以解釋爲什麼這樣的調用不會增加我的i
值嗎?在方法調用期間賦值並遞增值
int i = 0;
list.get(7 + (i = i++));
list.get(7 + (i = i++));
離開i=0
,而不是增加一個至少使得在第二叫它爲1
i = i++
就像是這樣做的:
int old_i = i;
i = i + 1;
i = old_i;
什麼是實際發生的情況是,i++
值的i
增量發生之前的值,然後i
將獲得.. i
值。
在一行i++
將使用舊值i
然後它會增加它。
i = i++
分配第一和第二增量
繼承人什麼本質上的執行看起來像:
list.get(7 + (i = i)); //list.get(7);
i = i + 1; //i = 1
list.get(7 + (i = i); //list.get(8);
i = i + 1; //i = 2
++i
將首先增加變量並指定第二個
「++我會先將變量加1並分配第二個「爲什麼對於i =(++ i)編譯器給我一個警告:「賦值給變量i沒有任何影響」? – xwhyz
,因爲它不會起作用。這是一種冗餘,因爲我在後綴遞增期間(++ i)分配了遞增的值。你只需要list.get(7 +(++ i)); – sunrize920
i = i++
意味着i
將被分配的i
舊值,然後將1。如果你想真正增加你的價值遞增,你應該寫兩種:
int i = 0;
list.get(7 + (i++));
list.get(7 + (i++));
或:
int i = 0;
list.get(7 + (i+1));
list.get(7 + (i+2));
'i = i ++'沒有任何意義,因爲'i ++'確實編輯了'i'的值 – BackSlash
你實際上想寫的是'list.get(7 + i ++)' –