(3)運算子 優先順序 if else

2021-06-18 02:29:02 字數 4010 閱讀 2546

++:分為前加加和後加加

前加加和後加加的區別:

相同點:不管是前加加還是後加加,結果就是變數的值都加了1。

不同點:如果是前加加,那麼首先給這個變數的值自身加1,然後再參與運算。如果是後加加,那麼首先拿原值參與運算,運算完成後自身加1。

int a=3;   int b= ++a -2;   結果是a=4,b=2

int b= ++a -2;   相當於   a=a+1;   int b=a-2;

int a=3;   int b= a++ -2;   結果是a=4,b=1

int b= a++ -2;   相當於   int b=a-2;   a=a+1;

--:分為前減減和後減減

前減減和後減減的區別:

相同點:不管是前減減還是後減減,結果就是變數的值都減了1。

不同點:如果是前減減,那麼首先給這個變數的值自身減1,然後再參與運算。如果是後減減,那麼首先拿原值參與運算,運算完成後自身減1。

int a=3;   int b= --a +2;   結果是a=2,b=4

int b= --a +2;   相當於   a=a-1;   int b=a+2;

int a=3;   int b= a-- +2;   結果是a=2,b=5

int b= a-- +2;   相當於   int b=a+2;   a=a-1;

int a=3;

int b=(a++)+(++a)*2+(a++)+(++a);

25 = 3 + 5 * 2 + 5 + 7

在乙個表示式中,如果既有一元運算子也有二元運算子,首先計算一元運算子,然後再計算二元運算子,因為一元運算子的優先順序要高於二元運算子。

一元運算子:指的就是只需要乙個運算元就能完成的運算,++和--。

二元運算子:指的就是至少需要兩個運算元才能完成的運算,+、-、*、/、%。

復合賦值運算子:

int number=10;

+=:number+=10也就是number=number+10

-+:number-=10也就是number=number-10

*=:number*=10也就是number=number*10

/=:number/=10也就是number=number/10

%=:number%=10也就是number=number%10

在計算機中,我們用bool型別來表示一句話的對錯,乙個條件的成立不成立。

bool型別只有兩個值,true和false。

關係運算子:>、<、>=、<=、==、!=,用來比較兩個事物之間的關係。

由關係運算子連線的表示式叫做關係表示式。

關係表示式運算的結果都是bool型別。

邏輯運算子:

&&:邏輯與

||:邏輯或

!:邏輯非

由邏輯運算子連線的表示式叫做邏輯表示式。

我們要求邏輯表示式的兩邊都要放關係表示式或者bool型別的值,整個邏輯表示式的結果也是bool型別。

邏輯表示式兩邊值對結果的影響:

表示式1    表示式2    表示式1&&表示式2

true         true           true

true         false          false

false        true           false

false        false          false

表示式1    表示式2    表示式1||表示式2

true         true           true

true         false          true

false        true           true

false        false          false

表示式    !表示式

true       false

false      true

邏輯與的短路

int a=10; 

int b=5; 

bool result=  ++a>50 && ++b>1;

這時候如果輸出結果a=11,b=5,按照正常應該是b=6,但是邏輯與中前面的關係表示式的結果為false,在邏輯與中只要有乙個是錯的整個就是錯的,後面的關係表示式不需要運算就可以得出結果,整個邏輯表示式是錯的,所以計算機就沒有計算後面的關係表示式。在邏輯與中只有第乙個關係表示式成立,計算機才會運算第二個關係表示式。

邏輯或的短路

int a=10; 

int b=5; 

bool result=  ++a>5|| ++b>1;

這時候如果輸出結果a=11,b=5,按照正常應該是b=6,但是邏輯或中前面的關係表示式的結果為true,在邏輯或中只要有乙個是對的整個就是對的,後面的關係表示式不需要運算就可以得出結果,整個邏輯表示式是對的,所以計算機就沒有計算後面的關係表示式。在邏輯或中只有第乙個關係表示式不成立,計算機才會運算第二個關係表示式。 

&、|和&&、||的區別:

&&、||在有些時候只計算一邊表示式就可以得出整個表示式的結果,這時候另一邊的表示式就會忽略不計算。

表示式1&&表示式2:如果表示式1為false,則第二個表示式就不再計算。

表示式1||表示式2:如果表示式1為true,則第二個表示式就不再計算。

表示式1&表示式2:兩個表示式都計算出結果。

表示式1|表示式2:兩個表示式都計算出結果。

運算優先順序(由上到下級別最高到最低)

最高:i++、i--

一元:+(正號)、-(負號)、!、++i、--i

乘除:*、/、%

加減:+、-

關係:<、>、<=、>=

相等:==、!=

邏輯與:&&

邏輯或:||

三元: ? :

賦值:=、+=、-=、*=、/=、%=、!=

三元運算子(c#中唯一的乙個三元運算子)

表示式1?表示式2:表示式3

執行過程:首先計算表示式1,表示式1應該是乙個能夠計算成bool型別的值,如果表示式1的值為true,則表示式2的值作為整個表示式的值,如果表示式1的值為false,則表示式3的值作為整個表示式的值。

注意:表示式2和表示式3必須是同一資料型別。

程式中有三種結構:順序結構、分支結構、迴圈結構。

if結構語法

if(關係表示式或者bool型別的值)

執行過程:程式執行到if處,首先判斷if後面小括號中的條件,如果條件成立則執行if所帶的大括號中的**,如果條件不成立則跳出if結構。

特點:不符合條件不會執行**。

如果不加大括號的話,if後面只能帶一句話,if下面的第二句話就與if沒有關係了,如果要讓if帶多句話就需要把**寫在if後面的大括號裡面。else也是如此。

if-else結構語法

if(關係表示式或者bool型別的值)

else

執行過程:程式執行到if處,首先判斷if後面小括號中的條件是否成立,如果條件成立則執行if所帶的大括號中的**,執行完成後跳出if-else結構,如果條件不成立則執行else所帶大括號中的**,執行完成後跳出if-else結構。

特點:至少會執行乙個大括號裡的**。

if和if-else的區別:

if用來判斷單一的條件,而if-else用來判斷兩種條件。

if else-if的語法:

if(關係表示式或者bool型別的值)

else if(關係表示式或者bool型別的值)

else if(關係表示式或者bool型別的值)

else

執行過程:程式首先判斷第乙個if後面小括號中表示式的值,如果為true的話,則執行該if所帶的大括號中**,執行完成後跳出if else-if結構,如果該if中的表示式的值為false,則繼續向下判斷else if中的表示式,只要成立的話就執行該else if所帶的大括號中**,執行完成後跳出if else-if結構,如果所有else if後面小括號的表示式都為false,則看if else-if結構中有沒有else,如果有else則執行else所帶大括號中的**,如果沒有else則跳出整個if else-if結構。

運算子優先順序 C 運算子優先順序

c 運算子優先順序 優先順序運算子 描述方向1 scope resolution 範圍解析 left to right 2 suffix postfix increment and decrement 字首 字尾遞增和遞減 function call 函式呼叫 array subscripting ...

運算子優先順序 Python 運算子優先順序

python 運算子優先順序 運算子描述 lambda lambda表示式 or布林 或 and布林 與 not x 布林 非 in,not in 成員測試 is,is not 同一性測試 比較 按位或 按位異或 按位與 移位 加法與減法 乘法 除法與取餘 x,x 正負號 x 按位翻轉 指數 x.a...

運算子優先順序 PHP運算子優先順序

php運算子優先順序 結合方向 運算子附加資訊 非結合clone new clone 和 new左 array 非結合 遞增 遞減運算子 非結合 int float string array object bool 型別非結合 instanceof 型別右結合 邏輯操作符 左 算術運算子 左 算術運...