賦值操作是程式設計中最常用的操作之一,c 語言共提供了 11 個賦值運算子,均為二元運算子,其中僅有乙個為基本賦值運算子 =,其餘 10 個均是復合賦值運算子,即:
(1)簡單賦值運算子" = "
用法: 變數識別符號 = 表示式
作用:將乙個資料(常量或表示式)賦給乙個變數 ,左側必須是變數,不能是常量或表示式
注意:1>.在程式中可以多次給乙個變數賦值,每賦一次值,與該變數相應的儲存單元的資料就被更新一次,記憶體中當前的資料就是最後一次所賦值的那個資料。即,最左邊變數所得到的新值是整個賦值表示式的值。
2>.賦值運算子的優先級別高於逗號運算子。
3>.注意賦值運算子「=」和等於運算子「==」的差別
4>.賦值運算子的左側只能是變數,而不能使常量或表示式。右側可以是表示式,包括賦值運算表示式。「a=b=1+1」是對的,而「a=1+1=b」是錯的(原因:由於賦值運算表示式的結合方式是從右到左,其第乙個賦值表示式的左側是常數,所以錯誤)
(2)型別轉換
賦值轉換規則:使賦值號右邊表示式值自動轉換成其左邊變數的型別
實型資料(包括單、雙精度)賦給整型變數時,捨棄實數的小數部分
整型資料賦給單、雙精度變數時,數值不變,但以浮點數形式儲存到變數中
長度相同的有符號與無符號整型數間,原樣賦值,但數值有時會有變化
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當上面的**被編譯和執行時,它會產生下列結果: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 的值 = 21line 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++學習企鵝圈子
C語言基礎丨運算子之關係運算子(三)
c語言提供了以下關係運算子 關係運算子都是雙目運算子,其結合性均為左結合。關係運算子的優先順序低於算術運算子,高於賦值運算子。在六個關係運算子中,的優先順序相同,高於 和 和 的優先順序相同。在c語言中,有的運算子有兩個運算元,例如 10 20,10和20都是運算元,是運算子。我們將這樣的運算子稱為...
C語言基礎丨運算子之位運算子(六)
對於更多緊湊的資料,c 程式可以用獨立的位或多個組合在一起的位來儲存資訊。檔案訪問許可就是乙個常見的應用案例。位運算子允許對乙個位元組或更大的資料單位中獨立的位做處理 可以清除 設定,或者倒置任何位或多個位。也可以將乙個整數的位模式 bit pattern 向右或向左移動。按位與 按位或 按位異或 ...
C語言基礎丨運算子之算術運算子(二)
算術運算子按運算元個數可分為一元運算子 含乙個運算元 和二元運算子 含兩個運算元 一元運算子的優先順序一般高於二元運算子。一元運算子 正號 負號 增1 減1 自增 在原來基礎上 1。例如 intnum 10 num printf num d num 注意 當printf num d num 這種寫法...