十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
首先,引入表達式的概念:由操作數(shù)和運算符組合成的式子
分為左值和右值
(1)左值:就是可以寫
的內(nèi)存塊,也就是變量
(2)右值:可以讀
的內(nèi)存塊,也就是變量,常量,字面值
(1)+
(2)-
(3)*
(4)/
如:10/3=3
5.0/2=2.5
說明:
如果兩個操作數(shù)都為整數(shù)
,執(zhí)行整數(shù)除法(舍棄小數(shù)部分),只要有浮點數(shù)
,就執(zhí)行浮點數(shù)除法,而且會向下取整
(也就是小數(shù)點之后的舍棄)
注意:/的右操作數(shù)不能為0
例:
int a=1;
int b=0;
printf("%d\n",a/b);
結(jié)果會報錯:
Exception in thread "main" java.lang.ArithmeticException: / by zero
//算術(shù)異常
(5)%–>取余
如:10%3=1
注意:%要求兩個操作數(shù)都為整數(shù),并且右操作數(shù)不能為0
,并且運算結(jié)果的符號由左操作數(shù)決定
例:
printf("%d\n",10%3);//1
printf("%d\n",-10%3);//-1
printf("%d\n",-10%-3);//1
printf("%d\n",-10%-3);//-1
(6)++ -->自增運算符
(7)-- -->自減運算符
注意:自增和自減運算符只能用于變量
,不可以用于常量或表達式
分為前置和后置:
(1)前置:先++或–,再使用
(2)后置:先使用,再++或–
例:
int i=0;
printf("%d\n",++i);//1
printf("%d\n",i);//1
i=0;
printf("%d\n",i++);//0
printf("%d\n",i);//1
二.賦值運算符=:結(jié)合性從右到左
例:
int a,b;
a=b=10;
printf("%d\n",a);//10
printf("%d\n",b);//10
復(fù)合賦值運算符
+=
-=
*=
/=
%=
<<=
>>=
&=
/=
^=
例:
a+=3;//相當(dāng)于a=a+3;
三.關(guān)系運算符>>=
<
<=
!= 用于測試“不相等”
== 用于測試“相等”
= 用于賦值
注意:要注意 == 和 = 的區(qū)別
四.邏輯運算符&&(邏輯與,二元運算符)
真 && 真 ->真 真 && 假 ->假
假 && 真 ->假 假 && 假 ->假
||(邏輯或,二元運算符)
真 || 真 ->真 真 || 假 ->真
假 || 真 ->真 假 || 假 ->假
!(邏輯非,一元運算符)
注意:
邏輯與的短路問題:當(dāng)左操作數(shù)為假時,即可判斷表達式結(jié)果為假,右操作數(shù)不執(zhí)行。
邏輯或的短路問題:當(dāng)左操作數(shù)為真時,即可判斷表達式結(jié)果為真,右操作數(shù)不執(zhí)行。
例:
int a = 1, b = 1;
printf("%d\n", ++a || ++b);
printf(“a=%d b=%d\n”, a, b); // a=2 b=1
int a = -1, b = -1;
printf("%d\n", ++a && ++b);
printf(“a=%d b=%d\n”, a, b); // a=0 b=-1
例:
x=y=1;
t=++x||++y;
//結(jié)果是t=1,x=2,y=1
五.位運算符(均在二進制位上操作)首先,我們要知道,數(shù)據(jù)存儲的最小的單位是字節(jié),而對數(shù)據(jù)進行操作的最小的單位是比特,每個字節(jié)由8個比特位構(gòu)成。
我們自己設(shè)定:A= 00000101,B= 00001011
&(按位與):同1為1,其它為0
則A&B=00000001
例:
|(按位或):有1即為1
則A|B=00001111
例:
~(按位取反):0變1,1變0
則~A=11111010
^(按位異或):相同為0,不同為1
則A^B=00001110
例:
0^0=0;
1^0=1;
1^1=0;
注意:一個數(shù)a位異或另外一個數(shù)b兩次,結(jié)果還是這個數(shù)a本身。(也就是說如果兩個數(shù)相同,異或的結(jié)果是0
)這個特點可以用來交換兩個元素的值
<<(按位左移):左操作數(shù)向左移動右操作數(shù)指定的位數(shù),低位補0
(也就是最左側(cè)不要了,右側(cè)補0)
則A<<2=00010100
注意:左移運算符左移一位相當(dāng)于乘以2
,而且左移丟棄的是符號位,所以正數(shù)左移可能會變?yōu)樨?fù)數(shù)
>>(按位右移):左操作數(shù)向右移動右操作數(shù)指定的位數(shù),高位補符號位(正數(shù)補0,負(fù)數(shù)補1)
>則A>>2=00000001
注意:右移運算符右移一位相當(dāng)于除以2
>>>:無符號右移:最右側(cè)不要了,最左側(cè)補0
六.條件運算符語法是 :exp1?exp2:exp3;
這個表達式的意思是如果exp1為真,整個表達式的結(jié)果就是exp2,如果exp1為假,整個表達式的結(jié)果就是exp3
例:
//求較大值
int a=10;
int b=20;
printf("%d\n",(a>b?a:b));
注意:表達式2和表達式3的結(jié)果必須是同類型
的,除非可以發(fā)生隱式類型轉(zhuǎn)換
例:
int a=10;
int b=20;
int c=a>b?1:2.0;
表達式不能單獨存在,結(jié)果必須要被使用
例:
int a = 10;
int b = 20;
a >b? a : b; // 會報錯: 不是語句
七.逗號運算符exp1,exp2,exp3,…expN;
逗號表達式會從左到右依次執(zhí)行,整個表達式的結(jié)果為最后一個表達式的結(jié)果
八.sizeof注意:sizeof是一個運算符
,而不是函數(shù)
注意:同一級的運算符,優(yōu)先次序由結(jié)合方向決定,
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧