c語言運算符與表達式
① 在c語言中11種賦值運算符的具體含義,用法
1.=
賦值運算符
變數=表達式
如:a=3;將a的值賦為3
2./=
除後賦值
變數/=表達式
如:a/=3;即a=a/3
3.*=
乘後賦值
變數*=表達式
如:a*=3;即a=a*3
4.%=
取模後賦值
變數%=表達式
如:a%=3;即a=a%3
5.+=
加後賦值
變數+=表達式
如:a+=3;即a=a+3
6.-=
減後賦值
變數-=表達式
如:a-=3;即a=a-3
7.<<=
左移後賦值
變數<<=表達式
左移就是將《左邊的數的二進制各位全部左移若干位,《右邊的數指定移動位數,高位丟棄,低位補0,
移幾位就相當於乘以2的幾次方
8.>>=
右移後賦值
變數>>=表達式
右移運算符是用來將一個數的各二進制位右移若干位,移動的位數由右操作數指定(右操作數必須是非負值),移到右端的低位被舍棄,對於無符號數,高位補0。對於有符號數,某些機器將對左邊空出的部分用符號位填補(即「算術移位」),而另一些機器則對左邊空出的部分用0填補(即「邏輯移位」)。注意:對無符號數,右移時左邊高位移入0;對於有符號的值,如果原來符號位為0(該數為正),則左邊也是移入0。如果符號位原來為1(即負數),則左邊移入0還是1,要取決於所用的計算機系統。有的系統移入0,有的
系統移入1。移入0的稱為「邏輯移位」,即簡單移位;移入1的稱為「算術移位」。
9.&=
按位與後賦值
變數&=表達式
按位與是指:參加運算的兩個數據,按二進制位進行「與」運算。如果兩個相應的二進制位都為1,則該位的結果值為1;否則為0。這里的1可以理解為邏輯中的true,0可以理解為邏輯中的false。按位與其實與邏輯上「與」的運算規則一致。邏輯上的「與」,要求運算數全真,結果才為真。若,A=true,B=true,則A∩B=true
10.
^=
按位異或後賦值
變數^=表達式
參與運算的兩個量按照對應的位進行異或運算,且
0^0→0,
0^1→1,
1^0→1,
1^1→0
此外,一個數與0異或仍保持不變,即a^0=a
一個數與自己異或結果為0,即a^a=0
11.|=
按位或後賦值
變數|=表達式
參與運算的兩個量按照對應位進行或運算,且
0|0→0,
0|1→1,
1|0→1,
1|1→1
這些位運算都是與二進制碼有關的,所以多弄弄也就會了
② C語言中:&= 與等於, |=或等於,這兩個表達式表示啥意思呢
答案:
a&=b; == a=a&b;
a|=b; == a=a|b;
③ C語言賦值運算符與賦值表達式
我們都知道基本的賦值運算符是"=",他的優先順序別低於其他的運算符,所以對該運算符往往最後讀取。下面和大家分享一下C語言賦值運算符與賦值表達式,一起來看看吧!
C語言賦值運算符與賦值表達式1
一、賦值運算符與賦值表達式
賦值符號「=「就是賦值運算符,作用是將一個數據賦給一個變數或將一個變數的值賦給另一個變數,由賦值運算符組成的表達式稱為賦值表達式。一般形式為:
變數名=表達式
在程序中可以多次給一個變數賦值,每賦一次值,與它相應的存儲單元中的數據就被更新一次,內存中當前的數據就是最後一次所賦值的那個數據。
例:a=12;此表達式讀作「將10的值賦值給變數a」。
說明:
a、如果賦值號兩邊的運算對象類型不一致,系統會自動進行類型轉換,轉換的規則:將賦值號右邊表達式的值的類型轉換成賦值號左邊變數的類型,
例:inty=3.5;在變數y中最終存儲的是整數3。
b、可以將復製表達式的.值再賦值給變數,形成連續賦值。
例如:x=y=25是一個連續賦值表達式,x=y=25等價於x=(y=25),所以表達式x=y=25最終的值為25。
二、復合的賦值運算符
在賦值運算符之前加上其他運算符可以構成復合賦值運算符。其中與算術運算有關的復合運算符是:+=,—=,x=,/=,%=。
兩個符號之間不可以有空格,復合賦值運算符的優先順序與賦值運算符的相同。表達式n+=1等價於n=n+1,作用是取變數n中的值增1再賦給變數n,其他復合的賦值運算符的運算規則依次類推。
如求表達a+=a—=axa的值,其中a的初值為12。
步驟:
(1)先進行「a—=axa「運算,相當於a=a—axa=12—144=—132。
(2)再進行「a+=—132「運算,相當於a=a+(—132)=—132—132=—264。
C語言賦值運算符與賦值表達式2
其一般形式為:
變數=表達式
例如:
x=a+b
w=sin(a)+sin(b)
y=i+++--j
賦值表達式的功能是計算表達式的值再賦予左邊的變數。賦值運算符具有右結合性,因此a=b=c=5可理解為a=(b=(c=5))。
在其它高級語言中,賦值構成了一個語句,稱為賦值語句。 而在C中,把「=」定義為運算符,從而組成賦值表達式。 凡是表達式可以出現的地方均可出現賦值表達式。
例如:式子x=(a=5)+(b=8)是合法的。它的意義是把5賦予a,8賦予b,再把a,b相加,和賦予x,故x應等於13。
在C語言中也可以組成賦值語句,按照C語言規定,任何錶達式在其未尾加上分號就構成為語句。因此如x=8;a=b=c=5;都是賦值語句,在前面各例中我們已大量使用過了。
類型轉換
如果賦值運算符兩邊的數據類型不相同,系統將自動進行類型轉換,即把賦值號右邊的類型換成左邊的類型。具體規定如下:
實型賦予整型,捨去小數部分。
整型賦予實型,數值不變,但將以浮點形式存放,即增加小數部分(小數部分的值為0)。
字元型賦予整型,由於字元型為一個位元組,而整型為二個位元組,故將字元的ASCII碼值放到整型量的低八位中,高八位為0。整型賦予字元型,只把低八位賦予字元量。
【例3-18】
#include
int main(void){
int a,b=322;
float x,y=8.88;
char c1=k,c2;
a=y;
x=b;
a=c1;
c2=b;
printf("%d,%f,%d,%c",a,x,a,c2);
return 0;
}
本例表明了上述賦值運算中類型轉換的規則。a為整型,賦予實型量y值8.88後只取整數8。x為實型,賦予整型量b值322, 後增加了小數部分。字元型量c1賦予a變為整型,整型量b賦予c2 後取其低八位成為字元型(b的低八位為01000010,即十進制66,按ASCII碼對應於字元B)。
注意:經大家反饋,筆者發現上面的例子容易造成誤解,現已對代碼進行更改,更改時間 2014-07-04 09:12:45,看評論的讀者請注意評論時間,不要混淆。
更改後的代碼如下:
#include
int main(void){
int a,c,b=322;
float x,y=8.88;
char c1=k,c2;
a=y;
x=b;
c=c1;
c2=b;
printf("a=%d, x=%f, c=%d, c2=%c ", a, x, c, c2);
return 0;
}
輸出結果:
a=8, x=322.000000, c=107, c2=B
復合的賦值運算符
在賦值符「=」之前加上其它二目運算符可構成復合賦值符。如+=、-=、*=、/=、%=、<<=、>>=、&=、^=、|=。
構成復合賦值表達式的一般形式為:
變數 雙目運算符=表達式
它等效於
變數=變數 運算符 表達式
例如:
a+=5 等價於 a=a+5
x*=y+7 等價於 x=x*(y+7)
r%=p 等價於 r=r%p
④ c語言中運算符有哪幾種,優先順序順序是怎樣
C語言中,運算符除了常見的三大類,算術運算符、關系運算符與邏輯運算符之外,還有一些用於完成特殊任務的運算符。
運算符的運算優先順序共分為15 級,1 級最高,15 級最低。 在表達式中,優先順序較高的先於優先順序較低的進行運算。而在一個運算量兩側的運算符 優先順序相同時,則按運算符的結合性所規定的結合方向處理。
一級運算符:標識,常量,字元串文字量,優先順序提升表達式最優先執行。
二級運算符:數組下標運算(expression)、函數調用(argument-expression-list)、成員訪問(identifier、-> identifier)、後綴自增(i++)、後綴自減(i--)、復合初始化(initializer-list)。
三級運算符:前綴自增(++i)、前綴自減(--i)、單目轉型表式式(取地址& ,提領 * , 正號+ ,負號-、位反~ 邏輯否!)、求類型長度(sizeof unary-expression)。
四級運算符:強製表達式成為type-name指定的類型( type-name ) cast-expression。
五級運算符:「 * 」 乘法運算符。
六級運算符:「 + 」加法運算符。
七級運算符:<< 左移運算符;>> 右移運算符。
八級運算符:<、<=、>、>=關系運算符。
九級運算符:「 == 」等於運算符;「 != 」不等於運算符。
十級運算符:「 & 」按位與運算符。
十一級運算符:「 ∧ 」按位異或運算符。
十二級運算符:「 | 」按位或運算符。
十三級運算符:「&&」邏輯與運算符。
十四級運算符:「 || 」邏輯或運算符。
十五級運算符:? :條件運算符。
(4)c語言運算符與表達式擴展閱讀
C語言中各運算符的結合性:
1、左結合性(自左至右):
例如算術運算符的結合性是自左至右,即先左後右。如有表達式x-y+z 則y 應先與「-」號結合,執行x-y 運算,然後再執行+z 的運算。這種自左至右的結合方向就稱為「左結合性」。
2、右結合性(自右至左)
自右至左的結合方向稱為「右結合性」。最典型的右結合 性運算符是賦值運算符。如x=y=z,由於「=」的右結合性,應先執行y=z 再執行x=(y=z)運算。C語言運算符中有不少為右結合性,應注意區別,以避免理解錯誤。
⑤ C語言中什麼是邏輯表達式,什麼是關系表達式。舉幾個例子
邏輯表達式是指運算符為或||、與&&、非!的表達式。返回值為0或1,0表示false,非0表示true. 例如!0返回1,0&&1返回0,0||1返回1。
關系表達式是指運算符為<,<=,>,>=,==,!=的表達式。返回值同樣為0或1,例如a!=b,a>=0等。
C語言用整數"1"表示"邏輯真"、用"0"表示"邏輯假"。但在判斷一個數據的"真"或"假"時,卻以0和非0為根據:
如果為0,則判定為"邏輯假";如果為非0,則判定為"邏輯真"。
例如,假設num=12,則: !num的值=0 ,num>=1 && num<=31的值=1 ,num || num>31的值=1。
邏輯運算符兩側的操作數,除可以是0和非0的整數外,也可以是其它任何類型的數據,如實型、字元型等。
短路原則:非常重要,在計算邏輯表達式時,只有在必須執行下一個表達式才能求解時,才求解該表達式(即並不是所有的表達式都被求解)。換句話說:
對於邏輯與運算,如果第一個操作數被判定為"假",系統不再判定或求解第二操作數;對於邏輯或運算,如果第一個操作數被判定為"真",系統不再判定或求解第二操作數。
(5)c語言運算符與表達式擴展閱讀:
C語言邏輯表達式注意:
由於浮點數在計算機中不能非常准確地表示,所以,判斷兩個浮點數是否相同時,通常不使用關系運算符「等於」(==),而是利用區間判斷方法來實現。為了判斷x是否等於5.003,可利用如下邏輯表達式:x>5.002 && x<5.004。
當此邏輯表達式為「真」時,就可以認為x等於5.003
邏輯及性質保真性:所有變數的真值皆為「真」的命題在邏輯或運算後的結果為真。保假性:所有變數的真值皆為「假」的命題在邏輯或運算後的結果為假。