int 不能轉換為short

2021-06-19 12:03:21 字數 1392 閱讀 3501

short s=3;

s=s+2;

s+=2

有什麼區別?

s=s+2編譯錯誤,s+2轉換為int型別 再賦給short會丟失精度,所以不能賦值給short型別的s

s+=2直接將2以short型別計算和;

在專案中我不常用以下邏輯運算子,小記一下

^為異或:true^true=false ;false^false=false;false^true=true;

&和&&的區別

&無論左邊是true還是false,右邊都運算

&&如果左邊是false,右邊不用運算

|:兩邊都參與運算

||:左邊為true右邊不運算;

位運算子:(二進位制運算)

3<<2=12;

3的二進位制向左移動兩位後面補0:3*2*2往左移移動幾就是幾的幾次冪

6>>2=1

6的二進位制向右移,超出兩位捨棄,前面多出兩位補0;6/4 捨棄小數部分取整為1

<<:乘以2的移動位數次冪

<<:除以2的移動位數次冪取整

>>最高位補什麼由原有資料的最高位值決定 如果最高位為0,右移後,用0補空位 如果最高位為1,右移後,用1補齊

>>>:無論最高位是什麼,右移後,都補0

&運算**換成二進位制運算)

6&3=2

6的二進位制:   110

3的二進位制: &011    0為false 1為true

010的值為2

道理相同:6|5=7 ;6^5=3

~波浪線為取反碼:~6+1=-6;

6^7^7=6(異或兩次同乙個數最後得自己)

第一次異或相當於加密,然後再異或一次就可恢復(加密演算法相當複雜|、^、等各種複雜加密)

2*8怎樣運算效率最高?

2*8可以把兩位轉換成二進位制然後和乘法一樣得到的二進位制資料再轉換成十進位制=16

位運算 2*8相當於2乘以2的3次冪,2<<3 2的二進位制資料向左邊移動三位就可得出二進位制轉換成十進位制=16(位運算效率最高)

小技巧:將60轉換成16進製制數 先將16轉換成2進製 取最後四位 通過&15 的結果 再(>>>)右移4位

switch case

switch(x)

default:

system.out.println("aa");

//break;

case :3

system.out.println("aa");

break;

case :4

system.out.println("abc");

break;

x=1;

default寫在前面,首先case3、case4 再執行default(沒有break)但沒遇到break和結尾

給for迴圈起名字,break直接跳出w

int與short之間的轉換

寫的乙個int轉short的類 前些時間做藍芽.標準的藍芽類沒法建資料流,後來就出現了只能傳送byte可是我們的程式中資料型別有很多,所以必要做轉化.這裡做了個int轉short的方法.public classtest system.out.println true public static sh...

把int轉換為char把int轉換為char

char ultoa unsigned long value,char string,int radix 將無符號整型數value轉換成字串並返回該字串,radix為轉換時所用基數 char ltoa long value,char string,int radix 將長整型數value轉換成字串並...

C 中將string轉換為int

c語言庫函式名 atoi 功 能 把字串轉換成整型數 函式說明 atoi 會掃瞄引數nptr字串,檢測到第乙個數字或正負符號時開始做型別轉換,之後檢測到非數字或結束符 0 時停止轉換,返回整型數。原型 int atoi const char nptr 需要用到的標頭檔案 include 程式例 1 ...