C運算符認識
C語言的運算符範圍很廣,可分為以下幾類:
1、算術運算符:用于各類數值運算。包括加( )、減(-)、乘(*)、除(/)、求餘(%)、自增( )、自減(--)共七種。
2、賦值運算符:用于賦值運算,分為簡單賦值(=)、複合算術賦值( =,-=,*=,/=,%=)和複合位運算賦值(&=,|=,^=,>>=,
3、逗号運算符:用于把若幹表達式組合成一個表達式(,)。
4、關系運算符:用于比較運算。包括大于(>)、小于(=)、小于等于(
5、邏輯運算符:用于邏輯運算。包括與(&&)、或(||)、非(!)三種。
6、條件運算符:這是一個三目運算符,用于條件求值(?:)。
7、位操作運算符:參與運算的量,按二進制位進行運算。包括位與(&)、位或(|)、位非(~)、位異或(^)、左移(>)六種。
8、指針運算符:用于取内容(*)和取地址(&)二種運算。
9、求字節數運算符:用于計算數據類型所占的字節數(sizeof)。
10、特殊運算符:有括号(),下标[],成員(→,.)等幾種。
二、 算術表達式和運算符的優先級與結合性
算術表達式是用算術運算符和括号将運算量(也稱操作數)連接起來的、符合C語言語法規則的表達式。運算對象包括函數、常量和變量等。
在計算機語言中,算術表達式的求值規律與數學中的四則運算的規律類似,其運算規則和要求如下。
(1)在算術表達式中,可使用多層圓括号,但括号必須配對。運算時從内層圓括号開始,由内向外依次計算各表達式的值。
(2)在算術表達式中,對于不同優先級的運算符,可按運算符的優先級由高到低進行運算,若表達式中運算符的優先級相同,則按運算符的結合方向進行運算。
(3)如果一個運算符兩側的操作數類型不同,則先利用自動轉換或強制類型轉換,使兩者具有相同類型,然後進行運算。
三、 自增自減運算符
作用:使變量的值增1或減1。
如: i,--i (在使用i之前,先使i的值加1、減1)。i ,i-- (在使用i之後,使i的值加1、減1)。
(1)隻有變量才能用自增運算符 ( )和自減運算符(--),而常量或表達式不能用,如10 或(x y) 都是不合法的。
(2) 和--的結合方向是“自右向左“,如 -i ,i的左邊是負号運算符,右邊是自增運算符,負号運算和自增運算都是 “自右向左“結合的,相當于 -(i )。
在循環語句中常用到自增(減)運算符,在指針中也常用到該運算符,考生要弄清楚“i ”和“ i”及“i--”和“--i”的區别,特别弄清楚表達式的值和變量的值。
賦值運算符與賦值表達式
一、賦值運算符與賦值表達式
賦值符号 “=“就是賦值運算符,作用是将一個數據賦給一個變量或将一個變量的值賦給另一個變量,由賦值運算符組成的表達式稱為賦值表達式。一般形式為:
變量名 = 表達式
在程序中可以多次給一個變量賦值,每賦一次值,與它相應的存儲單元中的數據就被更新一次,内存中當前的數據就是最後一次所賦值的那個數據。
例:a=12; 此表達式讀作“将10的值賦值給變量a”。
說明:
a、如果賦值号兩邊的運算對象類型不一緻,系統會自動進行類型轉換,轉換的規則:将賦值号右邊表達式的值的類型轉換成賦值号左邊變量的類型,
例:int y=3.5; 在變量y中最終存儲的是整數3。
b、 可以将複制表達式的值再賦值給變量,形成連續賦值。
例如:x=y=25 是一個連續賦值表達式,x=y=25 等價于x=(y=25),所以表達式x=y=25 最終的值為25 。
二、複合的賦值運算符
在賦值運算符之前加上其他運算符可以構成複合賦值運算符。其中與算術運算有關的複合運算符是: =,-=,*=,/=,%= 。
兩個符号之間不可以有空格,複合賦值運算符的優先級與賦值運算符的相同。表達式n =1等價于n=n 1,作用是取變量n中的值增1再賦給變量n,其他複合的賦值運算符的運算規則依次類推。
如求表達a =a-=a*a 的值,其中a的初值為12 。
步驟:
(1)先進行“a-=a*a“運算,相當于a=a-a*a=12-144=-132 。(2)再進行“a =-132“運算,相當于 a=a (-132)=-132-132=-264 。逗号運算符和逗号表達式
在c語言中,逗号除了作為分隔符,還可以用作一種運算符----逗号運算符,用逗号運算符将幾個表達式連接起來,例如a=b c,a=b*c等稱為逗号表達式。
一般形式為:
表達式1 ,表達式2 ,表達式3 , …,表達式n
例:x=2,y=3,z=4
逗号表達式具有從左至右的結合性,即先求解表達式1,然後依次求解表達式2,直到表達式n的值。表達式n的值就是整個逗号表達式的值。上述的逗号表達式的值就是表達式z=4的值4.需要注意的是,逗号運算符是所有運算符中級别最低的。
例:有如下程序段:
main(){int a=2,b=4,c=6,x,y;y=(x=a b),(b c);printf("y=%d,x=%d",y,x);}
程序顯示結果為:y=6,x=6
讨論:将y=(x=a b),(b c);改為y=((x=a b),b c) 的程序結果?
關系運算符和關系表達式
一、 C語言中的邏輯值
C語言中的邏輯值隻有兩個:真(true)和假(flase)。用非零代表真,用零代表假。因此,對于任意一個表達式,如果它的值為零,就代表一個假值,如果它的值為非零,就代表一個真值。隻要值不是零,不管是正數,負數,整數,實數,都代表一個真值。例如-5的邏輯值為真。
二、 邏輯表達式
“&&”和“||”的運算對象有兩個,故它們都是雙目運算符,而!的運算對象隻有一個,因此它是單目運算符。邏輯運算舉例如下:
(1)a&&b: 當&&兩邊都為“真”時,表達式a&&b的值才是真。
值得注意的是:在數學中,關系式0
(2)a||b: 當||兩邊有一個為“真”時,表達式a||b的值就是真。
(3)!a: 表示取反,如果a為真,則!A為假,反之亦然。例如!-5的值就為0.
在C語言中,由&&或||組成的邏輯表達式,在某些特定情況下會産生“短路“現象。
(1)x && y && z ,隻有當x為真(非0)時,才需要判别y的值;隻有x和y都為真時,才需要去判别z的值;隻要x為假就不必判别y和z,整個表達式的值為0。口訣:“一假必假”。
例:(!5==1)&&( i==0) (!5==1)表達式的值為0,所以計算機運行中就跳過( i==0)此表達式,(!5==1)&&( i==0)表達式的值為0.
(2)x||y||z ,隻要x的值為真(非零),就不必判别y和z的值 ,整個表達式的值為1,隻有x的值為假,才需要判别y的值,隻有x和y的值同時為假才需要判别z的值,口訣:“一真必真”。
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!