一、JAVA的自增、自減語法
//對自增(減)變量來說,"a++"和"++a"是一樣的
int a = 100;
System.out.println("a:" + a);
a++;
System.out.println("a:" + a); //輸出自加後的結果:101
int c = a++; //先賦值再自加,c的結果:101,a的結果102
System.out.println("a:"+a+" c:" + c);
c = a + 1; //這個是正常的運算
System.out.println("a:"+a+" c:" + c);
int d = ++a; //先自加再賦值,d的結果爲103,a的結果爲103
System.out.println("a:"+a+" d:" + d);
二、python的自增、自減語法
Python中是沒有++和--的。那麼要實現自增和自減的話,可以使用如下操作:
a = a + 1
或
a += 1
原因是python中的數字類型是不可變數據。也就是數字類型數據在 內存 中是不會發生改變,當變量值發生改變時,會新申請一塊內存賦值爲新值,然後將變量指向新的內存地址。
所以對於python來說,是沒有自增一說的。
>>> a = 10
>>> id(a)
140530470127960
>>> a += 1
>>> id(a)
140530470129080
+= 是改變變量,相當於重新生成一個變量,把操作後的結果賦予這個新生成的變量。
++ 是改變了對象本身,而不是變量本身,即改變數據地址所指向的內存中的內容。
int理論上是每次賦值都創建一個新對象的。但是由於使用頻繁,爲了提升性能避免浪費,所有 python 有個 整數池,默認 [-5, 256] 的數字都屬於這個整數池,這些每次賦值的時候,是取得池中的整數對象。但是其他的除外,如下:
>>> a = 5
>>> b = 5
>>> id(a)
140530470128360
>>> id(b)
140530470128360
>>> a is b
True
>>> c = 257
>>> d = 257
>>> id(c)
140530470136432
>>> id(d)
140530470136408
有時候在 Python 中看到存在 ++i 這種形式,這其實不是自增,只是簡單的表示正負數的正號而已。正正得正,負負得正,所以 ++i 和 --i 都是 i 。
三、go的自增、自減語法
在Go中 ++ 和 -- 只能作爲語句而非表達式。
示例:
a := 1
a ++ // 注意:不能寫成 ++ a 或 -- a 必須放在右邊使用
// b := a++ // 此處爲錯誤的用法,不能寫在一行,要單獨作爲語句使用
fmt.Println(a) // 2