亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

C語言初學者入門講座 第二講 數據類型(3)

2019-11-17 05:42:24
字體:
來源:轉載
供稿:網友

  基本運算符和表達式

  運算符的種類、優先級和結合性

  C語言中運算符和表達式數量之多, 在高級語言中是少見的。正是豐富的運算符和表達式使C語言功能十分完善。 這也是C語言的主要特點之一。

  C語言的運算符不僅具有不同的優先級, 而且還有一個特點,就是它的結合性。在表達式中, 各運算量參與運算的先后順序不僅要遵守運算符優先級別的規定,還要受運算符結合性的制約, 以便確定是自左向右進行運算還是自右向左進行運算。 這種結合性是其它高級語言的運算符所沒有的,因此也增加了C語言的復雜性。

  運算符的種類C語言的運算符可分為以下幾類:

  1.算術運算符

  用于各類數值運算。包括加(+)、減(-)、乘(*)、除(/)、求余(或稱模運算,%)、自增(++)、自減(--)共七種。

  2.關系運算符

  用于比較運算。包括大于(>)、小于(<)、等于(==)、 大于等于(>=)、小于等于(<=)和不等于(!=)六種。

  3.邏輯運算符

  用于邏輯運算。包括與(&&)、或()、非(!)三種。

  4.位操作運算符

  參與運算的量,按二進制位進行運算。包括位與(&)、位或()、位非(~)、位異或(^)、左移(<<)、右移(>>)六種。

  5.賦值運算符

  用于賦值運算,分為簡單賦值(=)、復合算術賦值(+=,-=,*=,/=,%=)和復合位運算賦值(&=,=,^=,>>=,<<=)三類共十一種。

  6.條件運算符

  這是一個三目運算符,用于條件求值(?:)。

  7.逗號運算符

  用于把若干表達式組合成一個表達式(,)。

  8.指針運算符

  用于取內容(*)和取地址(&)二種運算。

  9.求字節數運算符

  用于計算數據類型所占的字節數(sizeof)。

  10.非凡運算符

  有括號(),下標[],成員(→,.)等幾種。

  優先級和結合性

  C語言中,運算符的運算優先級共分為15級。1級最高,15級最低。在表達式中,優先級較高的先于優先級較低的進行運算。 而在一個運算量兩側的運算符優先級相同時, 則按運算符的結合性所規定的結合方向處理。C語言中各運算符的結合性分為兩種,即左結合性(自左至右)和右結合性(自右至左)。例如算術運算符的結合性是自左至右,即先左后右。如有表達式x-y+z則y應先與“-”號結合, 執行x-y運算,然后再執行+z的運算。這種自左至右的結合方向就稱為“左結合性”。而自右至左的結合方向稱為“右結合性”。 最典型的右結合性運算符是賦值運算符。如x=y=z,由于“=”的右結合性,應先執行y=z再執行x=(y=z)運算。 C語言運算符中有不少為右結合性,應注重區別,以避免理解錯誤。

  算術運算符和算術表達式基本的算術運算符

  1.加法運算符“+”加法運算符為雙目運算符,即應有兩個量參與加法運算。如a+b,4+8等。具有右結合性。

  2.減法運算符“-”減法運算符為雙目運算符。但“-”也可作負值運算符,此時為單目運算,如-x,-5等具有左結合性。

  3.乘法運算符“*”雙目運算,具有左結合性。

  4.除法運算符“/”雙目運算具有左結合性。參與運算量均為整型時, 結果也為整型,舍去小數。假如運算量中有一個是實型,則結果為雙精度實型。

void main(){
 PRintf("/n/n%d,%d/n",20/7,-20/7);
 printf("%f,%f/n",20.0/7,-20.0/7);
}


  雙目運算具有左結合性。參與運算量均為整型時, 結果也為整型,舍去小數。假如運算量中有一個是實型,則結果為雙精度實型。

printf("/n/n%d,%d/n",20/7,-20/7);
printf("%f,%f/n",20.0/7,-20.0/7);

  本例中,20/7,-20/7的結果均為整型,小數全部舍去。而20.0/7和-20.0/7由于有實數參與運算,因此結果也為實型。

  5.求余運算符(模運算符)“%”雙目運算,具有左結合性。要求參與運算的量均為整型。 求余運算的結果等于兩數相除后的余數。

void main(){
 printf("%d/n",100%3);
}

  雙目運算,具有左結合性。求余運算符% 要求參與運算的量均為整型。本例輸出100除以3所得的余數1。

  自增1,自減1運算符

  自增1運算符記為“++”,其功能是使變量的值自增1。自減1運算符記為“--”,其功能是使變量值自減1。自增1,自減1運算符均為單目運算,都具有右結合性??捎幸韵聨追N形式: ++i i自增1后再參與其它運算。--i i自減1后再參與其它運算。

i++  i參與運算后,i的值再自增1。
i--  i參與運算后,i的值再自減1。

  在理解和使用上輕易出錯的是i++和i--。 非凡是當它們出在較復雜的表達式或語句中時,經常難于弄清,因此應仔細分析。

void main(){
int i=8;
printf("%d/n",++i);
printf("%d/n",--i);
printf("%d/n",i++);
printf("%d/n",i--);
printf("%d/n",-i++);
printf("%d/n",-i--);
} i<--8
i<--i+1
i<--i-1
i<--i+1
i<--i-1
i<--i+1
i<--i-1 int i=8;
printf("%d/n",++i);
printf("%d/n",--i);
printf("%d/n",i++);
printf("%d/n",i--);
printf("%d/n",-i++);
printf("%d/n",-i--);  

  i的初值為8

  第2行i加1后輸出故為9;

  第3行減1后輸出故為8;

  第4行輸出i為8之后再加1(為9);

  第5行輸出i為9之后再減1(為8) ;

  第6行輸出-8之后再加1(為9);

  第7行輸出-9之后再減1(為8)

void main(){
int i=5,j=5,p,q;
p=(i++)+(i++)+(i++);
q=(++j)+(++j)+(++j);
printf("%d,%d,%d,%d",p,q,i,j);
}
i<--5,j<--5,p<--0,q<--0
i+i+i--->p,i+1-->i,i+1-->i,i+1-->i
j+1->j,j+1->j,j+1->j,j+j+j->q int i=5,j=5,p,q;
p=(i++)+(i++)+(i++);
q=(++j)+(++j)+(++j);

  這個程序中,對P=(i++)+(i++)+(i++)應理解為三個i相加,故P值為15。然后i再自增1三次相當于加3故i的最后值為8。而對于q 的值則不然,q=(++j)+(++j)+(++j)應理解為q先自增1,再參與運算,由于q自增1三次后值為8,三個8相加的和為24,j的最后值仍為8。算術表達式表達式是由常量、變量、函數和運算符組合起來的式子。 一個表達式有一個值及其類型, 它們等于計算表達式所得結果的值和類型。表達式求值按運算符的優先級和結合性規定的順序進行。 單個的常量、變量、函數可以看作是表達式的特例。

  算術表達式

  是由算術運算符和括號連接起來的式子, 以下是算術表達式的例子:

a+b  (a*2)/c (x+r)*8-(a+b)/7  ++i sin(x)+sin(y)  (++i)-(j++)+(k--)

  賦值運算符和賦值表達式

  簡單賦值運算符和表達式,簡單賦值運算符記為“=”。由“= ”連接的式子稱為賦值表達式。其一般形式為: 變量=表達式 例如:

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;都是賦值語句,在前面各例中我們已大量使用過了。

  假如賦值運算符兩邊的數據類型不相同, 系統將自動進行類型轉換,即把賦值號右邊的類型換成左邊的類型。具體規定如下:

  1.實型賦予整型,舍去小數部分。前面的例2.9已經說明了這種情況。

  2.整型賦予實型,數值不變,但將以浮點形式存放, 即增加小數部分(小數部分的值為0)。

  3.字符型賦予整型,由于字符型為一個字節, 而整型為二個字節,故將字符的ASCII碼值放到整型量的低八位中,高八位為0。

  4.整型賦予字符型,只把低八位賦予字符量。

void main(){
 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);
}
int a,b=322;
float x,y=8.88;
char c1='k',c2;
printf("%d,%f,%d,%c",a=y,x=b,a=c1,c2=b);

  本例表明了上述賦值運算中類型轉換的規則。a為整型,賦予實型量y值888后只取整數8。x為實型,賦予整型量b值322, 后增加了小數部分。字符型量c1賦予a變為整型,整型量b賦予c2 后取其低八位成為字符型(b的低八位為01000010,即十進制66,按ASCII碼對應于字符B)。

  復合賦值符及表達式

  在賦值符“=”之前加上其它二目運算符可構成復合賦值符。如
+=,-=,*=,/=,%=,<<=,>>=,&=,^=,=。 構成復合賦值表達式的一般形式為: 變量 雙目運算符=表達式 它等效于 變量=變量 運算符 表達式 例如:

  a+=5 等價于a=a+5  
  x*=y+7 等價于x=x*(y+7)  
  r%=p 等價于r=r%p

  復合賦值符這種寫法,對初學者可能不習慣, 但十分有利于編譯處理,能提高編譯效率并產生質量較高的目標代碼。逗號運算符和逗號表達式在

  逗號運算符

  C語言中逗號“,”也是一種運算符,稱為逗號運算符。 其功能是把兩個表達式連接起來組成一個表達式, 稱為逗號表達式。

  其一般形式為: 表達式1,表達式2 其求值過程是分別求兩個表達式的值,并以表達式2的值作為整個逗號表達式的值。

void main(){
 int a=2,b=4,c=6,x,y;
 y=(x=a+b),(b+c);
 printf("y=%d,x=%d",y,x);
}
a<--2,b<--4,c<--6,x<--0,y<--0
x<--a+b,y<---b+c  

  本例中,y等于整個逗號表達式的值,也就是表達式2的值,x是第一個表達式的值。對于逗號表達式還要說明兩點:

  1.逗號表達式一般形式中的表達式1和表達式2 也可以又是逗號表達式。例如: 表達式1,(表達式2,表達式3) 形成了嵌套情形。因此可以把逗號表達式擴展為以下形式: 表達式1,表達式2,…表達式n 整個逗號表達式的值等于表達式n的值。

  2.程序中使用逗號表達式,通常是要分別求逗號表達式內各表達式的值,并不一定要求整個逗號表達式的值。

  3.并不是在所有出現逗號的地方都組成逗號表達式,如在變量說明中,函數參數表中逗號只是用作各變量之間的間隔符。

[Practice] //arithmeticint a,b,c;
float d;
a=11;
b=235;
c=a+b-a*b;
d=(float)c/(float)a;
a=c/a;'Vtable
a,2,0
b,2,0
c,2,0
d,4,0.0
of Vtable
'Vupdate
1,0;2,0;3,0
4,0.0
1,11
2,235
3,-2339
4,-212.636368
1,-212
of Vupdate
of Practice
[Practice] //1int a,b,c1,c2;
a=25;
b=3243;
c1=b/a;
c2=b%a;'Vtable
a,2,0
b,2,0
c1,2,0
c2,2,0
of Vtable
'Vupdate
1,0;2,0;3,0;4,0
1,25
2,3243
3,129
4,18
of Vupdate
of Practice
[Practice] //1int a,b,c;
a=25;
b=40;
c=a+b,c+35;'Vtable
a,2,0
b,2,0
c,2,0
of Vtable
'Vupdate
1,0;2,0;3,0
1,25
2,40
3,65
of Vupdate
of Practice

  小結

  1.C的數據類型

  基本類型,構造類型,指針類型,空類型

  2.基本類型的分類及特點

類型說明符  字節 數值范圍
字符型char  1 C字符集
基本整型int 2 -32768~32767
短整型short int  2 -32768~32767
長整型 long int 4 -214783648~214783647
無符號型 unsigned  2 0~65535
無符號長整型 unsigned long 4 0~4294967295
單精度實型 float   4 3/4E-38~3/4E+38
雙精度實型 double  8 1/7E-308~1/7E+308

  3.常量后綴

L或l 長整型
U或u 無符號數
F或f 浮點數

  4.常量類型

整數,長整數,無符號數,浮點數,字符,字符串,符號常數,轉義字符。

  5.數據類型轉換

  ·自動轉換

  在不同類型數據的混合運算中,由系統自動實現轉換, 由少字節類型向多字節類型轉換。 不同類型的量相互賦值時也由系統自動進行轉換,把賦值號右邊的類型轉換為左邊的類型。

  ·強制轉換

  由強制轉換運算符完成轉換。

  6.運算符優先級和結合性

  一般而言,單目運算符優先級較高,賦值運算符優先級低。 算術運算符優先級較高,關系和邏輯運算符優先級較低。 多數運算符具有左結合性,單目運算符、三目運算符、 賦值

  7.表達式

  表達式是由運算符連接常量、變量、函數所組成的式子。 每個表達式都有一個值和類型。 表達式求值按運算符的優先級和結合性所規定的順序進行。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品亚洲一区二区三区| 8x海外华人永久免费日韩内陆视频| 欧美在线一区二区视频| 亚洲精品视频二区| 国产精品久久久久久久久免费| 伊人青青综合网站| 亚洲第一精品久久忘忧草社区| 国产情人节一区| 日韩精品免费综合视频在线播放| 日韩精品在线影院| 国产999在线| 国产精品热视频| 久久精品99久久香蕉国产色戒| 久久久久久美女| 97超级碰碰碰久久久| 亚洲图片在线综合| 日韩电影大片中文字幕| 欧美日韩中文字幕在线| 欧美性猛交丰臀xxxxx网站| 北条麻妃一区二区三区中文字幕| 国产精品尤物福利片在线观看| 2020国产精品视频| 国产精品嫩草视频| 中文字幕日韩av综合精品| 福利精品视频在线| 2021国产精品视频| 91久久精品久久国产性色也91| 亚洲综合中文字幕在线| 亚洲春色另类小说| 亚洲欧美日韩成人| 国产精品人人做人人爽| 欧美国产日韩一区二区在线观看| 国产精品网址在线| 欧美成人免费观看| 影音先锋日韩有码| 国产精品久久久久99| 久久久久久久影视| 国产成人激情小视频| 国产日韩在线一区| 成人午夜在线视频一区| 国产精品亚洲自拍| 性欧美暴力猛交69hd| 国产这里只有精品| 国产欧美 在线欧美| 亚洲精品999| 在线播放日韩精品| 久久91精品国产| 精品日韩视频在线观看| 成人黄色影片在线| 中文字幕欧美视频在线| 亚洲影院污污.| 丝袜一区二区三区| 久久亚洲精品中文字幕冲田杏梨| 欧美激情国产高清| 亚洲精品国产拍免费91在线| 97超碰国产精品女人人人爽| 日韩经典一区二区三区| 国产亚洲视频中文字幕视频| 亚洲国产天堂久久综合| 国产69精品久久久| 国外成人在线视频| 欧美一级大片视频| 日本sm极度另类视频| 国产精品一区二区三区免费视频| 91综合免费在线| 动漫精品一区二区| 日韩电视剧在线观看免费网站| 一区二区在线视频播放| 国产精品美女主播| 国内精品小视频在线观看| 91在线高清免费观看| 亚洲国产天堂久久综合网| 久久亚洲综合国产精品99麻豆精品福利| 在线观看欧美日韩| 亚洲欧美日韩精品久久亚洲区| 色综合老司机第九色激情| 日韩av影院在线观看| 欧美亚洲第一页| 国产精品网站大全| 日韩最新免费不卡| 亚洲视频欧洲视频| 亚洲黄色www网站| 国产69精品久久久久9999| 免费av一区二区| 91久久国产婷婷一区二区| 国内精品久久久久| 国产精品久久久久久搜索| 欧美日本在线视频中文字字幕| 成人国内精品久久久久一区| 亚洲色图第一页| 久久久久免费精品国产| 亚洲va欧美va国产综合剧情| 最近2019中文字幕一页二页| 日韩欧美国产一区二区| 亚洲xxx自由成熟| 国产精品普通话| 操日韩av在线电影| 91九色国产视频| 国产精品极品美女粉嫩高清在线| 日本高清+成人网在线观看| 国产精品美女免费| 成人在线精品视频| 欧美精品手机在线| 国产日韩精品在线观看| 午夜精品www| 日韩欧美一区二区三区久久| 日韩成人在线网站| 久久久免费精品| 国产精品午夜国产小视频| 欧美国产日韩二区| 日韩视频精品在线| 欧洲成人免费视频| 久久人人爽人人爽爽久久| 欧美亚洲国产视频| 色偷偷噜噜噜亚洲男人| 久久久久久久电影一区| 亚洲电影免费观看高清| 精品国产网站地址| 亚洲成人网在线观看| 久久精品99久久久香蕉| 在线亚洲国产精品网| 亚洲专区国产精品| 日韩中文综合网| 久久久久久亚洲精品不卡| 自拍偷拍亚洲在线| 国产婷婷色综合av蜜臀av| 国产精品久久久久久久久粉嫩av| 欧洲日韩成人av| 在线性视频日韩欧美| 日韩视频精品在线| 国产精品一区久久久| 亚洲精品白浆高清久久久久久| 欧美理论片在线观看| 国产成人jvid在线播放| 国产91ⅴ在线精品免费观看| 狠狠操狠狠色综合网| 欧美精品电影免费在线观看| 国产成人亚洲综合91精品| 久久精品国产免费观看| 成人美女免费网站视频| 欧美国产视频一区二区| 欧美成人亚洲成人日韩成人| 在线日韩欧美视频| 日韩欧美国产一区二区| 狠狠操狠狠色综合网| 性欧美xxxx视频在线观看| 国外视频精品毛片| 欧美在线国产精品| 欧美日韩不卡合集视频| 午夜欧美大片免费观看| 日日狠狠久久偷偷四色综合免费| 亚洲激情小视频| 久久久久久久久电影| 欧美亚洲日本网站| 亚洲综合中文字幕在线观看| 亚洲精品美女在线| 日韩欧美亚洲综合| 国产精品美女久久| 亚洲黄页视频免费观看| 国产成人高清激情视频在线观看| 日韩av最新在线| 欧美视频在线视频| 亚洲第一色中文字幕| 亚洲欧美在线一区|