c語言賦值符號
㈠ 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=(a-=a-5),(a=b,b+3);
是一個兩部分的逗號表達式,第一部分中(a-=a-5)實際是a
=
a
-
(a
-
5);是a
=
0
-
(0
-
5)則a
=
5,第一部分變為c=(a=5),所以a和c都等於5,第二部分也是逗號表達式,a=b將b賦值給a,b是0.所以a也變為0,現在a和都為0,c為5,最後一個b+3沒有作用。所以最後的值a、b、c分別是0、0、5
㈢ c語言基本符號
運算符的種類C語言的運算符可分為以下幾類:
1.算術運算符
用於各類數值運算。包括加(+)、減(-)、乘(*)、除(/)、求余(或稱模運算,%)、自增(++)、自減(–)共七種。
2.關系運算符
用於比較運算。包括大於(>)、小於(<)、等於(==)、 大於等於(>=)、小於等於(<=)和不等於(!=)六種。
3.邏輯運算符
用於邏輯運算。包括與(&&)、或(||)、非(!)三種。
4.位操作運算符
參與運算的量,按二進制位進行運算。包括位與(&)、位或(|)、位非(~)、位異或(^)、左移(<<)、右移(>>)六種。
5.賦值運算符
用於賦值運算,分為簡單賦值(=)、復合算術賦值(+=,-=,*=,/=,%=)和復合位運算賦值(&=,|=,^=,>>=,<<=)三類共十一種。
6.條件運算符
這是一個三目運算符,用於條件求值(?:)。
7.逗號運算符
用於把若干表達式組合成一個表達式(,)。
8.指針運算符
用於取內容(*)和取地址(&)二種運算。
9.求位元組數運算符
用於計算數據類型所佔的位元組數(sizeof)。
10.特殊運算符
有括弧(),下標[],成員(→,.)等幾種。
1.C的數據類型
基本類型,構造類型,指針類型,空類型
2.基本類型的分類物襲及特點
類型說明符 位元組 數值范圍
字元型char 1 C字元集塵棗
基本整型int 2 -32768~32767
短整型short int 2 -32768~32767
長整型 long int 4-214783648~214783647
無符號型 unsigned 20~65535
無符號長整型 unsigned long 4 0~4294967295
單精度實型 float 43/4E-38~3/4E+38
雙精度實型 double81/7E-308~1/7E+308
3.常量後綴
L或l 長整型
U或u 無符號數
F或f 浮點數
4.常量類型
整數,長整數,無符號數,浮點數,字元,字元串,符號常數,轉義字元。
5.數據類型轉換
·自動轉換
在不同類型數據的混合運算中,由系統自動實現轉換, 由少位元組類型向多位元組類型轉換。 不同類型的量相互賦值時也由系統自動進行轉換,把賦值號右邊的類型轉換為左邊的類型。
·強制轉換
由強制轉換運算符完成轉換。
6.運算符優先順序和結合性
派螞拆一般而言,單目運算符優先順序較高,賦值運算符優先順序低。 算術運算符優先順序較高,關系和邏輯運算符優先順序較低。 多數運算符具有左結合性,單目運算符、三目運算符、 賦值
7.表達式
表達式是由運算符連接常量、變數、函數所組成的式子。 每個表達式都有一個值和類型。 表達式求值按運算符的優先順序和結合性所規定的順序進行。
表示輸出類型的格式字元 格式字元意義
d 以十進制形式輸出帶符號整數(正數不輸出符號)
o 以八進制形式輸出無符號整數(不輸出前綴O)
x 以十六進制形式輸出無符號整數(不輸出前綴OX)
u 以十進制形式輸出無符號整數
f 以小數形式輸出單、雙精度實數
e 以指數形式輸出單、雙精度實數
g 以%f%e中較短的輸出寬度輸出單、雙精度實數
c 輸出單個字元
s 輸出字元串
標志字元為-、+、#、空格四種,其意義下表所示:
標志格式字元 標 志 意 義
- 結果左對齊,右邊填空格
+ 輸出符號(正號或負號)空格輸出值為正時冠以空格,為負時冠以負號
# 對c,s,d,u類無影響;對o類, 在輸出時加前
綴o 對x類,在輸出時加前綴0x;對e,g,f 類當結果有小數時才給出小數點
格式字元串
格式字元串的一般形式為: %[*][輸入數據寬度][長度]類型 其中有方括弧[]的項為任選項。各項的意義如下:
1.類型
表示輸入數據的類型,其格式符和意義下表所示。
格式 字元意義
d 輸入十進制整數
o 輸入八進制整數
x 輸入十六進制整數
u 輸入無符號十進制整數
f或e 輸入實型數(用小數形式或指數形式)
c 輸入單個字元
s 輸入字元串
轉義字元
轉義字元是一種特殊的字元常量。轉義字元以反斜線”/”開頭,後跟一個或幾個字元。轉義字元具有特定的含義,不同於字元原有的意義,故稱“轉義”字元。例如,在前面各例題printf函數的格式串中用到的“/n”就是一個轉義字元,其意義是“回車換行”。轉義字元主要用來表示那些用一般字元不便於表示的控制代碼。
常用的轉義字元及其含義
轉義字元 轉義字元的意義
/n 回車換行
/t 橫向跳到下一製表位置
/v 豎向跳格
/b 退格
/r 回車
/f 走紙換頁
// 反斜線符”/”
/’ 單引號符
/a 鳴鈴
/ddd 1~3位八進制數所代表的字元
/xhh 1~2位十六進制數所代表的字元
廣義地講,C語言字元集中的`任何一個字元均可用轉義字元來表示。表2.2中的/ddd和/xhh正是為此而提出的。ddd和hh分別為八進制和十六進制的ASCII代碼。如/101表示字?quot;A” ,/102表示字母”B”,/134表示反斜線,/XOA表示換行等。轉義字元的使用
在C語言中,對變數的存儲類型說明有以下四種:
auto 自動變數
register 寄存器變數
extern 外部變數
static 靜態變數
自動變數和寄存器變數屬於動態存儲方式, 外部變數和靜態變數屬於靜態存儲方式。在介紹了變數的存儲類型之後, 可以知道對一個變數的說明不僅應說明其數據類型,還應說明其存儲類型。 因此變數說明的完整形式應為: 存儲類型說明符 數據類型說明符 變數名,變數名…; 例如:
static int a,b; 說明a,b為靜態類型變數
auto char c1,c2; 說明c1,c2為自動字元變數
static int a[5]={1,2,3,4,5}; 說明a為靜整型數組
extern int x,y; 說明x,y為外部整型變數
與指針有關的各種說明和意義見下表。
int *p; p為指向整型量的指針變數
int *p[n]; p為指針數組,由n個指向整型量的指針元素組成。
int (*p)[n]; p為指向整型二維數組的指針變數,二維數組的列數為n
int *p() p為返回指針值的函數,該指針指向整型量
int (*p)() p為指向函數的指針,該函數返回整型量
int **p p為一個指向另一指針的指針變數,該指針指向一個整型量。
指針變數的賦值
p可以有以下兩種方式:
(1)指針變數初始化的方法 int a;
int *p=&a;
(2)賦值語句的方法 int a;
int *p;
p=&a;
(1)取地址運算符&
(2)取內容運算符*
㈣ c語言中規定 賦值運算符的左邊必須是什麼
賦值運算符的左邊必須是變數。
簡單賦值運算符記為「=」,由「=」連接的式子稱為賦值表達式。其一般形式為:
變數=表達式
例如:
x=a+bw=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。
(4)c語言賦值符號擴展閱讀
賦值運算符的作用是把右側表達式的值存伍指旅入左側變數中,C語言中賦值操作是作為一種表達式來處理的。
賦值運算符(=)可以和算術運算符(+,-,*,/,%)及雙目運算符(&,|,^,>>,<<)組合成一個復合賦值運算符。但需要注意的是復合賦值運算符的兩個組成符號之間不能有空白字元。
㈤ 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)
……
㈥ C語言中賦值運算符&=的含義
a+=b 等同於 a = a+b
a-=b 等同於 a = a-b
a*=b 等同於 a = a*b
a/=b 等同於 a = a/b
a%=b 等同於 a = a%b
a&=b 等同於 a = a&b &表示按位與
a>>=b 等同於 a = a>>b >>表示右移
a<<=b 等同於 a = a<<b <<表示左移
a|=b 等同於 a = a|b |表示按位或
a^=b 等同於 a = a^b ^表示按位異或
基本的賦值運算符是「=」。他的優先順序別低於其他的運算符,所以對該運算符往往最後讀取。
一開始可能會以為它是「等於」,其實不是的。它的作用是將一個表達式的值賦給一個左值。一個表達式或者是一個左值,或者是一個右值。
所謂左值是指一個能用於賦值運算左邊的表達式。左值必須能夠被修改,不能是常量。我們現在是用變數作左值,以後還可以看到,指針和引用也可以作左值。
復合的賦值運算符,又稱為帶有運算的賦值運算符,也叫賦值縮寫。
例如:i=i+j;可表示為 i+=j;這里+=是復合賦值運算符。
同樣的共有10種這樣的運算符,它們是:
+= 加賦值;
-= 減賦值;
*= 乘賦值;
/= 除賦值;
%= 求余賦值;
&= 按位與賦值;
| = 按位或賦值;
^= 按位異或賦值;
<<= 左移位賦值;
>>= 右移位賦值。
㈦ c語言中賦值運算符%什麼意思
c語言中賦值運算符%,表示求余運算符。
例如:3%2=1;5%2=1;
㈧ C語言中+=是什麼意思
C語言中+=是復合賦值運算符。復合賦值運算符就是在簡單賦值符「=」之前加上其它運算符構成,例如+=、-=、*=、/=、%=。
即:a+=1;等價於a=a+1。+=的意思就是把左邊的第一個符號移到右邊,其實就是b=b+c的意思。直接把b+=c的b+移到右邊,將b的值取出再取出c的值,相加然後賦給b,存儲在b開辟的內存空間中,類似的還有,b-=c、b*=c都是這個意思。
這么寫可以讓執行優化,定址a的地址一次即可,否則需要兩次對a進尺晌行定址。然而cpu的突飛猛進讓這個優化在幾十年前已經沒有實際價值了,保留下來無非是因為語法兼容和程序員習慣。
(8)c語言賦值符號擴展閱讀
C語言中運算符號種類
1、算術運算符
用於各類數值運算。包括加(+)、減(-)、乘(*)、除(/)、求余(或稱模運算,%)、自增(++)、自減(--)共七種。
2、關系運算符
用於比較運算。包括大陵純鋒於(>)、小於(<)、等於(==)、 大於等於(>=)、小於等於(<=)和不等於(!=)六種。
3、邏輯運算符
用於邏輯運算。包括與(&&)、或(||)、非(!)三種。
4、位操作運算符
參與運算的量,按二進制位進行運算。包括位與(&)、位或(|)、位非(~)、位異或(^)、左移(<<)、右移(>>)六種。
5、賦值運算符
用於賦值運算,分為簡單賦值(=)、復合算術賦值(+=,-=,*=,/=,%=)和復合褲賣位運算賦值(&=,|=,^=,>>=,<<=)三類共十一種。
6、條件運算符
這是一個三目運算符,用於條件求值(?:)。
7、逗號運算符
用於把若干表達式組合成一個表達式(,)。
8、指針運算符
用於取內容(*)和取地址(&)二種運算。
9、求位元組數運算符
用於計算數據類型所佔的位元組數(sizeof)。
10、特殊運算符
有括弧(),下標[],成員(→,.)等幾種。
㈨ 在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語言賦值運算符
賦值號左側必須是修個改的變數
7,a+2,'x'都是常量/常量表達式,不可被修改,不能作為賦值運算符的左操作數