C語言中的運算子
簡單賦值運算子記為“=”,由“= ”連線的式子稱為賦值表示式。歡迎大家閱讀!更多相關資訊請關注相關欄目!
無論是加減乘除還是大於小於,都需要用到運算子,在C語言中的運算子和我們平時用的基本上都差不多。運算子包括賦值運算子、算術運算子、邏輯運算子、位邏輯運算子、位移運算子、關係運算符、自增自減運算子。大多數運算子都是二目運算子,即運算子位於兩個表示式之間。單目運算子的意思是運算子作用於單個表示式。(具體什麼是表示式下一節再說)
C語言中的運算子
無論是加減乘除還是大於小於,都需要用到運算子,在C語言中的運算子和我們平時用的基本上都差不多。運算子包括賦值運算子、算術運算子、邏輯運算子、位邏輯運算子、位移運算子、關係運算符、自增自減運算子。大多數運算子都是二目運算子,即運算子位於兩個表示式之間。單目運算子的意思是運算子作用於單個表示式。(具體什麼是表示式下一節再說)
一、賦值運算子
賦值語句的作用是把某個常量或變數或表示式的值賦值給另一個變數。符號為‘=’。這裡並不是等於的意思,只是賦值,等於用‘==’表示。
注意:賦值語句左邊的變數在程式的其他地方必須要宣告。
得已賦值的變數我們稱為左值,因為它們出現在賦值語句的左邊;產生值的表示式我們稱為右值,因為她它們出現在賦值語句的右邊。常數只能作為右值。
例如:
count=5;
total1=total2=0;
第一個賦值語句大家都能理解。
第二個賦值語句的意思是把0同時賦值給兩個變數。這是因為賦值語句是從右向左運算的,也就是說從右端開始計算。這樣它先total2=0;然後total1=total2;那麼我們這樣行不行呢?
(total1=total2)=0;
這樣是不可以的,因為先要算括號裡面的,這時total1=total2是一個表示式,而賦值語句的左邊是不允許表示式存在的。
二、算術運算子
在C語言中有兩個單目和五個雙目運算子。
符號
功能
單目正
單目負
乘法
除法
取模
加法
減法
下面是一些賦值語句的例子,
在賦值運算子右側的表示式中就使用了上面的算術運算子:
Area=Height*Width;
num=num1+num2/num3-num4;
運算子也有個運算順序問題,先算乘除再算加減。單目正和單目負最先運算。
取模運算子(%)用於計算兩個整數相除所得的餘數。例如:
a=7%4;
最終a的結果是3,因為7%4的餘數是3。
那麼有人要問了,我要想求它們的商怎麼辦呢?
b=7/4;
這樣b就是它們的商了,應該是1。
也許有人就不明白了,7/4應該是1.75,怎麼會是1呢?這裡需要說明的是,當兩個整數相除時,所得到的結果仍然是整數,沒有小數部分。要想也得到小數部分,可以這樣寫7.0/4或者7/4.0,也即把其中一個數變為非整數。
怎樣由一個實數得到它的整數部分呢?這就需要用強制型別轉換了。例如:
a=(int)
(7.0/4);
因為7.0/4的值為1.75,如果在前面加上(int)就表示把結果強制轉換成整型,這就得到了1。那麼思考一下a=(float)
(7/4);最終a的結果是多少?
單目減運算子相當於取相反值,若是正值就變為負值,若是負數就變為正值。
單目加運算子沒有意義,純粹是和單目減構成一對用的。
三、邏輯運算子
邏輯運算子是根據表示式的值來返回真值或是假值。其實在C語言中沒有所謂的真值和假值,只是認為非0為真值,0為假值。
符號
功能
&&
邏輯與
邏輯或
邏輯非
例如:
5!3;
0||-2&&5;
!4;
當表示式進行&&運算時,只要有一個為假,總的表示式就為假,只有當所有都為真時,總的式子才為真。當表示式進行||運算時,只要有一個為真,總的值就為真,只有當所有的都為假時,總的式子才為假。邏輯非(!)運算是把相應的變數資料轉換為相應的真/假值。若原先為假,則邏輯非以後為真,若原先為真,則邏輯非以後為假。
還有一點很重要,當一個邏輯表示式的後一部分的取值不會影響整個表示式的值時,後一部分就不會進行運算了。例如:
a=2,b=1;
a||b-1;
因為a=2,為真值,所以不管b-1是不是真值,總的表示式一定為真值,這時後面的表示式就不會再計算了。
四、關係運算符
關係運算符是對兩個表示式進行比較,返回一個真/假值。
符號
功能
>
大於
<
小於
>=
大於等於
<=
小於等於
等於
不等於
這些運算子大家都能明白,主要問題就是等於==和賦值=的區別了。
一些剛開始學習C語言的人總是對這兩個運算子弄不明白,經常在一些簡單問題上出錯,自己檢查時還找不出來。看下面的程式碼:
if(Amount=123)
很多新人都理解為如果Amount等於123,就怎麼樣。其實這行程式碼的意思是先賦值Amount=123,然後判斷這個表示式是不是真值,因為結果為123,是真值,那麼就做後面的。如果想讓當Amount等於123才執行時,應該if(Amount==123)
……