1. 程式人生 > >i++和++i的區別

i++和++i的區別

很多朋友在學習基礎的時候很容易遇到過這個問題,++i和i++到底有什麼區別?
下面來詳細解釋一下。
首先i++和++i單獨為一條語句時沒有任何區別;
例如:
int i=1;
i++; //單獨為一條語句
System.out.println(“i=”+i);//i=2

int i=1;
++i; //單獨為一條語句
System.out.println(“i=”+i);//i=2
這種情況無任何區別,最終的i都會自增1。

但是, 當i++與++i參與到另一條語句的執行時就會有區別,總的可以概括為i++為先參與運算之後再自身加1,++i為先自身加1再參與其他的運算

例:
int i=3;
int j=i++;
System.out.println(“i=”+i);//結果為i=4
System.out.println(“j=”+j);//結果為j=3

這條語句就已經不是i++在單獨運行了,因為它參與了j的賦值,所以它會先參與j的賦值運算然後再自身加一,也就是說,先把自己原有的值3,拿出來賦值給j,之後自己在加1,這樣列印的結果就是j=3,x=4。

下面再看一下++i的用法。
int i=3;
int j=++i;
System.out.println(“i=”+i);//結果為i=4
System.out.println(“j=”+j);//結果為j=4

這條語句中的++i同樣參與了y的賦值,不同的是這裡的++i會先自己加1之後再把值賦給y,所以這條語句列印的結果就是y=4,i=4。
但是值得注意的是無論是先參與運算還是先自身加1再參與運算,最終i的值都會加1。

下面來個小練習:
判斷最終的a、b、c各是多少?
int a = 15;
int b = 15;
int c = 15;

a = ++b; //a=16,b=16,c=15
c = a–; //a=15,b=16,c=16
b = ++a; //a=16,b=16,c=16
a = c–; //a=16,b=16,c=15

最終結果為:a=16,b=16,c=15

相關推薦

JavaScript運算符:遞增遞減(++i,--i i++,i-- 的區別)

nbsp key mic comment 包含 -- 效應 1+n com 遞增和遞減操作符直接借鑒自C,而且各有兩個版本:前置型 (遞增 ++i ,遞減 --i )和 後置型 (遞增 i++ ,遞減 i-- )。書本上對兩者的定義是:前置型應該位於要操作的變量之前,而後置

js ++ii++的區別

bsp ons http pre sans 前綴 -h 單位 alt ++i和i++的定義:   1. 如果用前綴運算符對一個變量增1(減1),則在將該變量增1(減1)後,用新值在表達式中進行其他的運算。   2. 如果用後綴運算符對一個變量增1(減1),則用該變量的

i++++i區別

++i ++ 輸出結果 print body nbsp pos 之前 ont 1.  i++為後自增 整體表達式的值為自增之前的值 2.  ++i為前自增 整體表達式的值為自增後的值 # include <stdio.h> int main(void)

自增自減 i++ ++i區別

post 宋體 font clas style span 與運算 rom ++ ◆在不參與運算的情況下,i++和++i都是在變量的基礎加1 ◆在參與運算的情況下 Var i=123; Var j=i++; 先將i的值123賦值給j,之後再自增 j的值為123 i

++ii++的區別

比較 word comm nbsp 引用 x11 AR 常見 循環 ++i和i++區別在於運算順序和結合方向。 js中有兩種自加運算,其運算符均為++,功能為將運算符自加1. 其中: ++VAR被稱為前自加,其後面的變量執行自加操作,其運算為,先執行自加操作,再引用VA

js中 i++ ++i區別

alt nts 表達 i++ ring string pla line class i++ 是先引用再自增; ++i是先自增再引用; int i,x; i = 1; x = 1; x = i ++;      //先讓x變成i的值1,再讓i加1 prin

關於Java中for循環的i++++i區別

信息 執行c println 耗時 實例 空間 申請 開始 for 我們應該都知道i++和++i的區別是: ++i是先執行 i = i +1 再使用 i 的值,而 i++ 是先使用 i 的值再執行 i = i + 1; for循環的執行順序如下: for(a;b;c) {

簡介一下 i++++i&&i=i+i,i+=1;的區別

text 的區別 pan 表示 復合 mil mod 當前 resolv 首先: int i=2; i++=2; ++i=3; 前者先顯示當前的值,而後者則是先自增在顯示值; second i=i+1和i+=1; 輸出結果雖然一樣,但是 1.byte i=2; i+=2

Js 中的i++ ++i區別

... ons 不同 減法 是不是 pre 簡單 前置 進行 首先碰見 i++ 和 ++i 會一臉蒙蔽 感覺沒什麽區別,都是相加 , 但是 輸出的值是不同!!! 來奉上代碼來進行比較 var i = 1; var a = i++; //a = 1; 此時i為2,但賦

JS 中 ++i i++的區別

【首先】從自身來看,++i 和 i++都 等同於 i = i + 1; 【但是一般情況下】,它們都是跟賦值聯絡在一起。 比如: var a ; a = i ++ //將i的值賦給a , 即a = i,之後再執行i = i + 1; a = ++ i //將i+1 的值賦給a,即a = i + 1 ,

深入理解i++++i區別

首先: i++ : 先取i的值作為表示式的值,然後執行 i = i + 1 ++i : 先執行 i = i + 1,再取運算完之後的值作為表示式的值 舉例和解釋: 先來個熱身的簡單例子 public static void main(String[] args

java疑難雜症之一(i+=i=i+的區別

這個問題起源於一道筆試題。short j=1;j=j+1;和short j=1;j+=1;有什麼錯,錯在哪?        1)都知道數字的字面量(直接量)預設int型別, 那麼short j=1沒

i++++i區別,及其執行緒安全問題

i++和++i都是i=i+1的意思,但是過程有些許區別:i++:先賦值再自加。(例如:i=1;a=1+i++;結果為a=1+1=2,語句執行完後i再進行自加為2)++i:先自加再賦值。(例如:i=1;a=1+++i;結果為a=1+(1+1)=3,i先自加為2再進行運算)但是在

java i++++i區別

//i++和++i是有區別的,//i++和++i都代表著i=i+1; //i++是在一個先使用原值,然後加1,即先使用i的值,後讓i+1. //++i則是先加1後使用,即先讓i+1後再使用i的新值. class ijiajia { public static void m

C語言自增自減,i++++i區別

自增、自減運算子。 自增:i++,++i 自減:i--,--i i++和++i的區別:當i++和++i單獨一行時,兩者的作用相同,都實現i=i+1;但不同之處在於i++先使用i的之後,再執行i=i+1,而++i是先執行i=i+1,在執行使用i的值。 而 a = ++i,相當於 i=i+1; a = i;而 

C語言中i++++i區別

C語言中i++和++i的區別 C語言中++i和i++是有區別的!快速理解的話就是用一句話概括: 1、i++是先賦值再運算+1; 2、++i是先運算+1再賦值; i++和++i都是c語言裡的自增,但是它們自增的順序不同。++i表示,i自增1後再參與其它運算,而i++ 則是i參與運算後,i的

i++++i區別

很多朋友在學習基礎的時候很容易遇到過這個問題,++i和i++到底有什麼區別? 下面來詳細解釋一下。 首先i++和++i單獨為一條語句時沒有任何區別; 例如: int i=1; i++; //單獨為一條語句

i++++i, i----i區別

    i的值總加減,表示式的值,誰在前總等誰(設定i初始值為10)    1 固定的:不管怎樣,i的值都會改變,對於i++和++i,i的值最終都為11,同樣對於i--和--i,i的值最終都為9。   

JAVA for迴圈執行順序 及 i++++i區別

1.i與i++的區別是: ++i  是先執行   i=i+1  再使用 i 的值,而 i++ 是先使用 i 的值再執行 i=i+1。 2.但是如果不瞭解 for 迴圈的執行順序則容易出錯。  for迴圈的執行順序如下: for(sta1;sta2;sta3) {    st

JVM 使用javap反編譯命令解釋i++++i區別

一個簡單的例子 public class Test{ public static void main(String[] args){ int i = 0; int j = 1; int k = 2;