package
com.sdjt.study.jibenleixing;
/**
* @author:lyy
*/public
class
test
} 在s1=s1+1;中,s1+1運算的結果是int型,把它賦值給乙個short型變數s1,所以會報錯;而在s1+=1;中,由於是s1是short型別的,所以1首先被強制轉換為short型,然後再參與運算,並且結果也是short型別的,因此不會報錯。那麼,s1=1+1;為什麼不報錯呢?這是因為1+1是個編譯時可以確定的常量,「+」運算在編譯時就被執行了,而不是在程式執行的時候,這個語句的效果等同於s1=2,所以不會報錯。前面講過了,對基本型別執行強制型別轉換可能得出錯誤的結果,因此在使用+=、-=、*=、/=、%=等運算子時,要多加注意。
運算子對基本型別的影響
當使用+、-、*、/、%運算子對基本型別進行運算時,遵循如下規則:
1. 只要兩個運算元中有乙個是double型別的,另乙個將會被轉換成double型別,並且結果也是double型別;
2. 否則,只要兩個運算元中有乙個是float型別的,另乙個將會被轉換成float型別,並且結果也是float型別;
3. 否則,只要兩個運算元中有乙個是long型別的,另乙個將會被轉換成long型別,並且結果也是long型別;
4. 否則,兩個運算元(包括byte、short、int、char)都將會被轉換成int型別,並且結果也是int型別。
當使用+=、-=、*=、/=、%=、運算子對基本型別進行運算時,遵循如下規則:
• 運算子右邊的數值將首先被強制轉換成與運算子左邊數值相同的型別,然後再執行運算,且運算結果與運算子左邊數值型別相同。
當使用「==」運算子在基本型別和其包裝類物件之間比較時,遵循如下規則:
1. 只要兩個運算元中有乙個是基本型別,就是比較它們的數值是否相等。
2. 否則,就是判斷這兩個物件的記憶體位址是否相等,即是否是同乙個物件。
go基本型別和運算子
乙個簡單的列子 var a bool ture bool值只有false和true。兩個相同的型別之間可以通過 或者 來比較獲取乙個bool值。比如 var a 1a 5 false a 1 true a 2 true a 1 false go對於值之間的比較非常嚴格,只有兩個相同的型別的值才可以進...
三 王道 運算子 c 基本型別的型別轉換
1.賦值運算子 a.賦值運算的左值必須是可修改的,被const修飾的變數不行 b.多個賦值操作符,各變數必須具有共同的資料型別 2.自增自減運算子 a.i 先取位址,內容 1,存放在暫存器中,先變後用 i 先去位址,存放在暫存器中,再增在記憶體中的位址,先用後變 b.自增自減只能用於變數,不能用於常...
go學習 go基本型別和運算子
go型別 只能通過顯示型別轉換進行型別間轉換 bool 只有true和false 整形 int8,uint8 byte int16,uint16,int32,uint32,int64,uint64,int和uint與平台相關 浮點數 float32和float64 相當於c的double 複數 co...