賦值操作是程式設計中最常用的操作之一,C 語言共提供了 11 個賦值運算子,均為二元運算子,其中僅有一個為基本賦值運算子 =,其余 10 個均是復合賦值運算子,即:
(1)簡單賦值運算子" = "
用法: 變數識別符號 = 運算式
作用:將一個資料(常量或運算式)賦給一個變數 ,左側必須是變數,不能是常量或運算式
注意:
1>.在程式中可以多次給一個變數賦值,每賦一次值,與該變數相應的存盤單元的資料就被更新一次,記憶體中當前的資料就是最后一次所賦值的那個資料,即,最左邊變數所得到的新值是整個賦值運算式的值,
2>.賦值運算子的優先級別高于逗號運算子,
3>.注意賦值運算子“=”和等于運算子“==”的差別
4>.賦值運算子的左側只能是變數,而不能使常量或運算式,右側可以是運算式,包括賦值運算運算式,“a=b=1+1”是對的,而“a=1+1=b”是錯的(原因:由于賦值運算運算式的結合方式是從右到左,其第一個賦值運算式的左側是常數,所以錯誤)
(2)型別轉換
賦值轉換規則:使賦值號右邊運算式值自動轉換成其左邊變數的型別
【1】實型資料(包括單、雙精度)賦給整型變數時,舍棄實數的小數部分
【2】整型資料賦給單、雙精度變數時,數值不變,但以浮點數形式存盤到變數中
【3】長度相同的有符號與無符號整型數間,原樣賦值,但數值有時會有變化
【4】char、int、long 等型別的轉換
1)“短”資料賦給“長”變數
符號擴展:若最高位位1(負數),則變數高位元組位補1;反之,補0,
2)“長”資料賦給“短”變數
只將資料的低位元組位原封不動送到變數中(資料有可能有差錯),
(3)復合賦值運算子:
在賦值符“ = ”之前加上其它運算子,構成復合賦值運算子,
種類:+=(加賦值)、-=(減賦值)、*=(乘賦值)、/=(除賦值)、%=(求余賦值)、 <<=(左移賦值)、>>=(右移賦值)、&=(按位與賦值)、|=(按位或賦值)、*A=(按位異或賦值),
注意:
1>.兩個符號之間不可以有空格
2>.復合賦值運算子的優先級與賦值運算子的相同,運算式n+=1等價于n=n+1,作用是去變數n中的值增1再賦值給變數n,其他復合賦值運算子的運算規則以此類推,
例:求運算式a+=a-=a*a的值
解:先進行“a-=a*a”運算,相當于a=a-a*a=12-144=-132
再進行“a+=-132”運算,相當于a=a+(-132)=-132-132=-264
3>.如果賦值運算子兩側的型別不一致,在賦值前系統將自動先把右側的值或通過運算式求得的數值按賦值號左邊變數的型別進行轉換,
賦值操作的優先級較低,僅高于逗號運算子,
實體
請看下面的實體,了解 C 語言中所有可用的賦值運算子:
#include <stdio.h>
main()
{
int a = 21;
int c ;
c = a;
printf("Line 1 - = 運算子實體,c 的值 = %d\n", c );
c += a;
printf("Line 2 - += 運算子實體,c 的值 = %d\n", c );
c -= a;
printf("Line 3 - -= 運算子實體,c 的值 = %d\n", c );
c *= a;
printf("Line 4 - *= 運算子實體,c 的值 = %d\n", c );
c /= a;
printf("Line 5 - /= 運算子實體,c 的值 = %d\n", c );
c = 200;
c %= a;
printf("Line 6 - %= 運算子實體,c 的值 = %d\n", c );
c <<= 2;
printf("Line 7 - <<= 運算子實體,c 的值 = %d\n", c );
c >>= 2;
printf("Line 8 - >>= 運算子實體,c 的值 = %d\n", c );
c &= 2;
printf("Line 9 - &= 運算子實體,c 的值 = %d\n", c );
c ^= 2;
printf("Line 10 - ^= 運算子實體,c 的值 = %d\n", c );
c |= 2;
printf("Line 11 - |= 運算子實體,c 的值 = %d\n", c );
}
當上面的代碼被編譯和執行時,它會產生下列結果:
Line 1 - = 運算子實體,c 的值 = 21
Line 2 - += 運算子實體,c 的值 = 42
Line 3 - -= 運算子實體,c 的值 = 21
Line 4 - *= 運算子實體,c 的值 = 441
Line 5 - /= 運算子實體,c 的值 = 21
Line 6 - %= 運算子實體,c 的值 = 11
Line 7 - <<= 運算子實體,c 的值 = 44
Line 8 - >>= 運算子實體,c 的值 = 11
Line 9 - &= 運算子實體,c 的值 = 2
Line 10 - ^= 運算子實體,c 的值 = 0
Line 11 - |= 運算子實體,c 的值 = 2
今天就分享到這里啦,希望對大家學習有所幫助!
如果你想更好的提升你的編程能力,學好C語言C++編程!加入【C語言C++學習企鵝圈子】,有一些(原始碼、專案實戰視頻、專案筆記,基礎入門教程)分享喲!歡迎轉行和學習編程的伙伴,利用更多的資料學習成長比自己琢磨更快哦!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/253799.html
標籤:C
