C語言基礎丨運算符之賦值運算符(五)


賦值操作是程序設計中最常用的操作之一,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++學習企鵝圈子】,有一些 (源碼、項目實戰視頻、項目筆記,基礎入門教程)分享喲!歡迎轉行和學習編程的伙伴,利用更多的資料學習成長比自己琢磨更快哦!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM