開篇都是這一句,見諒!由於本人是個初學者希望自己的文章不會誤導廣大「群眾「,如果有錯誤之處還望前輩指出。謝謝!
一、擴充套件的運算子(+= ,-= ,*= ,/=,%=)的乙個小問題:存在強制型別的轉換。
short s=1;s = s+1;
short s=1;s+=1;
上面兩個**有沒有問題,如果有,那裡有問題。
第乙個有問題,第二個沒有問題。
因為:第一行**裡s為指定的string型別,s+1有一次型別轉換,變成了int型別,再賦值給short型別的時候會報錯顯示損失精度。然而擴充套件的賦值運算子其實隱含了乙個強制型別轉換。
s += 1;
不是等價於 s = s + 1;而是等價於 s = (s的資料型別)(s + 1);因而編譯執行成功。
二、比較運算子:
==,!=,>,>=,<,<=
特點:無論你的操作是簡單還是複雜,(結果都是boolean型別!!!!。)
//boolean flag = (a == b);
//boolean flag = (a = b); //這行**是有問題的,不相容的型別;裡面不是比價運算子,而是賦值運算子。因此=不要與==混淆。
三、邏輯運算子:&,|,^,! ,&&,||
&&和&的區別? 同理||和|的區別?
a:最終結果一樣。
b:&&具有短路效果。左邊是(false),右邊不執行。
||具有短路效果。左邊是(true),右邊不執行。
舉例:int x = 3;
int y = 4;
boolean b1 = ((++x == 3) && (y++ == 4));//(4==3flase)已經錯誤,後邊的不再執行。如果輸出的話:x=4,y=4,b1=flase
boolean b2=((++x==4)||(y++==4);//(++x==4)已經正確,後邊的不再執行。如果輸出的話:x=4;y=4;b2=true
四、位運算子:& | ~ ^ >> << >>>
臨時有事,明天有空接著寫,嘿嘿。謝謝**和補充o(∩_∩)o
期末考試結束,**擼起來!
要做位運算,首先要把資料轉換為二進位制。
例如:求~3和~4: 對補碼的格式進行按位取反,而我們看到取反後的數值是原碼格式
3的二進位制: 00000000 00000000 00000000 00000011 原碼=補碼
~ 11111111 11111111 11111111 11111100 補碼
11111111 11111111 11111111 11111011 反碼
10000000 00000000 00000000 00000100 原碼 這裡是我們看到的結果:-4
^的特點:乙個資料對另乙個資料位異或兩次,該數本身不變。例如:a ^ b ^ b 結果a的值不變
<<:左移左邊最高位丟棄,右邊補齊0 >>:右移最高位是0,左邊補齊0;最高為是1,左邊補齊1 (是啥補啥) >>>:無符號右移 無論最高位是0還是1,左邊補齊0
<< 把《左邊的資料乘以2的移動次冪:3 << 2=3*2^2=12; >> 把》左邊的資料除以2的移動次冪:24 >> 2=24/(2^2)=6
*-24 >> 2:
計算出24的二進位制:11000
原碼:10000000 00000000 00000000 00011000
反碼:11111111 11111111 11111111 11100111
補碼:11111111 11111111 11111111 11101000
資料是對補碼操作
11111111 11111111 11111111 11101000
1111111111 11111111 11111111 111010(00) 補碼
補碼:1111111111 11111111 11111111 111010
反碼:1111111111 11111111 11111111 111001
螢幕顯示的原碼形式
原碼:1000000000 00000000 00000000 000110 結果是-6
五、三目運算子: 比較表示式?表示式1:表示式2;結果是乙個boolean型別的資料,執行流程:先看表達是正確與否;正確執行表示式1,錯誤執行表示式2
判斷大小:int max = a>b?a:b;
system.out.println("兩個數較大的數是:"+max);
//比較三個數的較大的值
int c = 12;
//int flag;常常用temp做為臨時變數,flag用作boolean型別中常見
int temp = a>b?a:b;
int max1= c>temp?c:temp;
system.out.println("三個數較大的數是:"+max1);}}
一些運算子
int a 3 int b a 先把a的值賦給b,a再自增 int c a a先自增,再把值賦給c system.out.println a system.out.println b system.out.println c 結果輸出 535 冪運算,計算2 3 double pow math.po...
位運算子的一些簡單應用
在第一節概述裡就說了,c語言是一種中級語言,能對計算機硬體直接操作,這就涉及到位的概念。一 位的概念 我們知道,在計算機中,一位元組佔8位 現在的某些電腦也有佔16位的 這樣表示的數的範圍為0 255,也即00000000 11111111。位就是裡面的0和1。char c 100 實際上c應該是0...
位運算子的一些簡單應用
在第一節概述裡就說了,c語言是一種中級語言,能對計算機硬體直接操作,這就涉及到位的概念。一 位的概念 我們知道,在計算機中,一位元組佔8位 現在的某些電腦也有佔16位的 這樣表示的數的範圍為0 255,也即00000000 11111111。位就是裡面的0和1。char c 100 實際上c應該是0...