




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第3章數(shù)據(jù)類型、運算符和表達(dá)式3.1數(shù)據(jù)類型
常量3.2變量3.33.4運算符和表達(dá)式3.5數(shù)據(jù)類型轉(zhuǎn)換本章內(nèi)容導(dǎo)讀本章主要介紹C語言的基本數(shù)據(jù)類型以及變量的定義方法,基本運算符的運算規(guī)則、優(yōu)先級和結(jié)合性以及表達(dá)式的構(gòu)成等。通過學(xué)習(xí)本章,讀者應(yīng)掌握以下內(nèi)容:了解C語言的各種數(shù)據(jù)類型和運算符;掌握各種基本數(shù)據(jù)類型常量和字符串常量的書寫方法;掌握常量和變量的定義、初始化和賦值方法;掌握基本運算符的運算規(guī)則、優(yōu)先級和結(jié)合性;掌握表達(dá)式計算和變量賦值時數(shù)據(jù)類型轉(zhuǎn)換的規(guī)則。C語言提供的數(shù)據(jù)結(jié)構(gòu),以數(shù)據(jù)類型的形式出現(xiàn)。包括:基本類型包括整型、實型(又稱浮點型)、字符型和枚舉型四種。構(gòu)造類型由基本數(shù)據(jù)類型按一定規(guī)則組合而成的復(fù)雜數(shù)據(jù)類型,包括數(shù)組類型、結(jié)構(gòu)體類型和共用體類型三種。指針類型用來表示內(nèi)存地址。空類型從語法完整性角度給出的數(shù)據(jù)類型,表示不需要數(shù)據(jù)值,因而沒有類型。C語言中的數(shù)據(jù),有常量和變量之分,分別屬于上述的類型。本章主要介紹基本類型中的整型、實型和字符型三種。3.1數(shù)據(jù)類型概念在程序運行過程中,其值不能改變的量,又稱為常數(shù)。
分類
(1)整型常量(2)實型常量(3)字符型常量
(4)字符串常量(5)符號常量常量的類型,系統(tǒng)可通過書寫形式自動識別,無需定義。3.2常量表示形式又稱為整數(shù),C語言中有三種形式:(1)十進(jìn)制整型常量,例如10、36。(2)八進(jìn)制整型常量(必須以數(shù)字0開頭),例如012。(3)十六進(jìn)制整型常量(必須以0X或0x開頭),例如0x36。分類(1)基本整型(2)長整型(在數(shù)值后面加L或l):對超出基本整型值域的整型常量,可使用長整型常量表示,例如123l、315L等。(3)短整型1、整型常量3.2常量類型匹配規(guī)則一個整型常量,可以賦給能容納下其值的整型變量。例如,其值在-215至(215-1)的整型常量,可以賦給int型變量和longint型變量;其值在-231至(231-1)的整型常量,則只能賦給longint型變量。注意:常量沒有unsigned型。但一個非負(fù)整型常量,只要其值不超過相應(yīng)變量的取值范圍,也可以賦給unsigned型變量。1、整型常量3.2常量表示形式
又稱為浮點型常量或?qū)崝?shù),有兩種表達(dá)形式:
(1)十進(jìn)制小數(shù)形式,例如3.14、9.8。(2)指數(shù)形式:<尾數(shù)>E(或e)<整型指數(shù)>,例如3.0E+5等。說明
實型常量不分float型和double型。一個實型常量,可以賦給一個實型變量(float型或double型)。2、實型常量3.2常量定義用一對單引號括起來的單個字符,例如'a'、'+'等。轉(zhuǎn)義字符C語言還允許使用一種特殊形式的字符常量,以反斜杠“\”開頭的轉(zhuǎn)義字符。注意(1)如果反斜杠或單引號或雙引號本身作為字符常量,必須寫成轉(zhuǎn)義字符的形式,即
'\\'、'\''、'\"',而不能直接寫成
'\'、'''、'"'。(2)C語言規(guī)定字符常量中的字母是區(qū)分大小寫的,例如
'x'和'X'是不同的字符常量。(3)C語言中空字符和空格符號不同。空字符用轉(zhuǎn)義字符'\0'表示,其值是0;空格符號是ASCII字符集中的一個可顯示字符,其ASCII值是32,在屏幕上顯示為空格。3、字符常量3.2常量定義字符串常量是用一對雙引號括起來的若干字符序列。長度字符串中字符的個數(shù)稱為字符串長度。長度為0的字符串(即一個字符都沒有的字符串)稱為空串,表示為""
(一對緊連的雙引號)。例如
"Howdoyoudo."、"Goodmorning."等,都是字符串常量,其長度分別為14和13(空格也是一個字符)。
如果反斜杠和雙引號作為字符串中的有效字符,則必須使用轉(zhuǎn)義字符。例如(1)C:\msdos\v6.22→"C:\\msdos\\v6.22"
(2)Isay:"Goodbye!"→"Isay:\"Goodbye!\""
4、字符串常量3.2常量存儲C語言規(guī)定:存儲字符串常量時,由系統(tǒng)在字符串的末尾自動加一個'\0'作為字符串的結(jié)束標(biāo)志。注:在源程序中書寫字符串常量時,不必加結(jié)束字符'\0'
,否則畫蛇添足。
例如字符串"CHINA",其在內(nèi)存中實際存儲為:最后一個字符'\0'是系統(tǒng)自動加上的,占用6個字節(jié)而非5個字節(jié)的內(nèi)存空間。CHINA\0說明:字符常量'A'與字符串常量"A"是不同的。(1)定界符不同:字符常量使用單引號,而字符串常量使用雙引號;(2)長度不同:字符常量的長度固定為1,而字符串常量的長度,可以是0,也可以是某個整數(shù)。4、字符串常量3.2常量格式為了在程序中明確表示某些常量的含義,可以給常量取一個容易識別的名字,且符合標(biāo)識符的命名規(guī)則。#define符號常量常量其中,常量可以是任意類型。#define是一個編譯預(yù)處理命令,稱為宏定義命令。
注:符號常量一般采用大寫字母表示,而變量一般采用小寫字母表示。符號常量使用之前必須先定義。符號常量的定義一般放在程序的開頭,每個定義必須獨占一行,因為不是語句,所以后面沒有分號;。5、符號常量3.2常量定義在程序運行過程中,其值可以改變的量。特點(1)變量名。每個變量都必須有一個名字,變量命名遵循標(biāo)識符命名規(guī)則。(2)變量值。在程序運行過程中,變量值存儲在內(nèi)存中。程序中通過變量名引用變量的值。變量值的數(shù)據(jù)類型與變量的數(shù)據(jù)類型一致。命名規(guī)則(1)有效字符:只能由字母、數(shù)字和下劃線組成,且以字母或下劃線開頭。(2)有效長度:隨系統(tǒng)而異。3.3變量例如,由于student_name和student_number的前8個字符相同,有的系統(tǒng)認(rèn)為這兩個變量相同而不加區(qū)別。(3)C語言的關(guān)鍵字不能用作變量名。注意:C語言對英文字母的大小寫敏感,即同一字母的大小寫,被認(rèn)為是兩個不同的字符。習(xí)慣上,變量名和函數(shù)名中的英文字母用小寫,以增加可讀性。標(biāo)識符命名的良好習(xí)慣──見名知意所謂“見名知意”即通過變量名就知道變量值的含義。通常應(yīng)選擇能表示數(shù)據(jù)含義的英文單詞(或縮寫)作變量名,或漢語拼音字頭作變量名。例如,name/xm(姓名)、sex/xb(性別)、age/nl(年齡)、salary/gz(工資)。3.3變量C語言中,要求對所有變量,必須先定義、后使用;在定義變量的同時進(jìn)行賦初值的操作稱為變量初始化。
定義格式
數(shù)據(jù)類型符變量名1[,變量名2,……];例如floatradius,length,area;
初始化格式
數(shù)據(jù)類型符變量名1[=初值1][,變量名2[=初值2],……];
例如floatradius=2.5,length,area;3.3變量分類根據(jù)占用內(nèi)存字節(jié)數(shù)的不同,整型變量分為四類:(1)基本整型(類型關(guān)鍵字int)(2)短整型(類型關(guān)鍵字short[int])(3)長整型(類型關(guān)鍵字long[int])(4)無符號整型。又分為無符號基本整型(unsigned[int])、無符號短整型(unsignedshort)和無符號長整型(unsignedlong)三種,只能用來存儲無符號整數(shù)。
1、整型變量3.3變量占用內(nèi)存字節(jié)數(shù)與值域上述各類整型變量占用的內(nèi)存字節(jié)數(shù),因系統(tǒng)而異。16位系統(tǒng)中,一般用2字節(jié)表示一個int型變量,且long型(4字節(jié))≧int型(2字節(jié))≧short型(2字節(jié))。不同類型的整型變量,其值域不同。占用內(nèi)存字節(jié)數(shù)為n的(有符號)整型變量,其值域為-2n*8-1至2n*8-1-1;無符號整型變量的值域為0至2n*8-1。例如,PC機(jī)中的一個int型變量,其值域為-22*8-1至22*8-1-1,即-32768至32767;一個unsigned型變量的值域為0至22*8-1,即0至65535。1、整型變量3.3變量分類
(1)單精度型。類型關(guān)鍵字為float,一般占4字節(jié),提供7位有效數(shù)字。
(2)雙精度型。類型關(guān)鍵字為double,一般占8個字節(jié),提供15至16位有效數(shù)字。
2、實型變量3.3變量字符型變量的類型關(guān)鍵字為char,占用1字節(jié)內(nèi)存單元。存儲
字符型變量用來存儲字符常量。將一個字符常量存儲到一個字符變量中,實際上是將該字符的ASCII碼值(無符號整數(shù))存儲到內(nèi)存單元中。例如charch1,ch2;/*定義兩個字符變量ch1、ch2*/
ch1='a';ch2='b';/*給字符變量賦值*/特點
字符數(shù)據(jù)在內(nèi)存中存儲的是字符的ASCII碼─一個無符號整數(shù),其形式與整數(shù)的存儲形式一樣,所以C語言允許字符型數(shù)據(jù)與整型數(shù)據(jù)之間通用。(1)一個字符型數(shù)據(jù),既可以字符形式輸出,也可以整數(shù)形式輸出。(2)允許對字符數(shù)據(jù)進(jìn)行算術(shù)運算,即對其ASCII碼值進(jìn)行算術(shù)運算。
3、字符型變量3.3變量【例3-1】字符型變量的字符形式輸出和整數(shù)形式輸出。
#include<stdio.h>intmain(void)
{ charch1,ch2;
ch1='a';ch2='b';
printf("ch1=%c,ch2=%c\n",ch1,ch2);
printf("ch1=%d,ch2=%d\n",ch1,ch2); return0;
}
程序運行結(jié)果:
ch1=a,ch2=b
ch1=97,ch2=983、字符型變量3.3變量
C語言中,如果定義了變量并賦予其初值,但不希望在程序中對其值進(jìn)行修改,則可以將該變量定義為有名常量。定義格式const
數(shù)據(jù)類型符變量名1=初值1[,變量名2=初值2,…];注:有名常量主要用于程序運行過程中,其值不允許改變的量。定義后,若在程序中改變其值,將出錯。4、有名常量3.3變量C語言中,除控制語句和輸入輸出函數(shù)外,其它所有基本操作都作為運算符處理。
基本算術(shù)運算符+、-(減法/取負(fù))、*、/、%(求余數(shù))注意:兩個整數(shù)相除,其商為整數(shù),小數(shù)部分被舍棄。例如,5/2=2。對于求余數(shù)運算%,要求兩側(cè)的操作數(shù)均為整型數(shù)據(jù),否則出錯。表達(dá)式用運算符和括號將運算對象(常量、變量和函數(shù)等)連接起來的、符合C語言語法規(guī)則的式子,稱為表達(dá)式。單個常量、變量或函數(shù),可看作是表達(dá)式的一種特例。將單個常量、變量或函數(shù)構(gòu)成的表達(dá)式稱為簡單表達(dá)式,其它表達(dá)式稱為復(fù)雜表達(dá)式。3.4運算符和表達(dá)式優(yōu)先級運算符結(jié)合性1[]()->.從左至右2!~++---*&sizeof從右至左3*/%從左至右4+-從左至右5<<>>從左至右6<<=>>=從左至右7==!=從左至右8&從左至右9^從左至右10|從左至右11&&從左至右12||從左至右13?:從右至左14=+=-=*=/=%=&=^=|=>>=<<=從右至左15,從左至右優(yōu)先級和結(jié)合性結(jié)合性是指當(dāng)一個操作數(shù)兩側(cè)的運算符具有相同的優(yōu)先級時,該操作數(shù)是先與左邊的運算符結(jié)合,還是先與右邊的運算符結(jié)合。自左向右的結(jié)合方向,稱為左結(jié)合性。反之,稱為右結(jié)合性。結(jié)合性是C語言的獨有概念。除單目運算符、賦值運算符和條件運算符是右結(jié)合性外,其它運算符都是左結(jié)合性。運算規(guī)則(1)按運算符的優(yōu)先級高低次序執(zhí)行。例如,先乘除后加減。(2)如果在一個運算對象(或稱操作數(shù))兩側(cè)的運算符的優(yōu)先級相同,則按C語言規(guī)定的結(jié)合方向進(jìn)行。例如,算術(shù)運算符的結(jié)合方向是“自左至右”,即執(zhí)行a-b+c時,先執(zhí)行a-b;然后再執(zhí)行加c的運算。3.4運算符和表達(dá)式算術(shù)運算符包括+、-、*、/、%、+(取正)和-(取負(fù))。
名稱運算符運算對象個數(shù)功能運算對象類型結(jié)果類型結(jié)合性正+單目前綴取正整型或?qū)嵭驼突驅(qū)嵭蛷挠抑磷筘?fù)-取負(fù)加+雙目中綴加法從左至右減-減法乘*乘法除/除法模%整除取余整型整型1、算術(shù)運算符和算術(shù)表達(dá)式3.4運算符和表達(dá)式自增(++)、自減(--)運算符
單目運算符,用于對整型、字符型和指針型變量的值加1和減1的運算,運算結(jié)果仍是原來的數(shù)據(jù)類型。使用方法(1)前置運算──運算符放在變量之前:++變量、--變量。
先使變量的值增(或減)1,然后再以變化后的值參與其它運算,即先增減、后運算。(2)后置運算──運算符放在變量之后:變量++、變量--。
變量先參與其它運算,然后再使變量的值增(或減)1,即先運算、后增減。
1、算術(shù)運算符和算術(shù)表達(dá)式3.4運算符和表達(dá)式說明(1)自增、自減運算,常用于循環(huán)語句中,使循環(huán)控制變量加(或減)1,以及指針變量中,使指針指向下(或上)一個地址。(2)自增、自減運算符,不能用于常量和表達(dá)式。例如,5++、--(a+b)等都是非法的。(3)在表達(dá)式中,連續(xù)使同一變量進(jìn)行自增或自減運算時,很容易出錯,所以最好避免這種用法。1、算術(shù)運算符和算術(shù)表達(dá)式3.4運算符和表達(dá)式【例3-2】自增、自減運算符的用法與運算規(guī)則。#include<stdio.h>
int
main(void){
int
x=6,y;
printf("x=%d\n",x);/*輸出x的初值*/
y=++x; /*前置運算*/
printf("y=++x:x=%d,y=%d\n",x,y);
y=x--; /*后置運算*/
printf("y=x--:x=%d,y=%d\n",x,y);
return0;}程序運行結(jié)果:x=6y=++x:x=7,y=7y=x--:x=6,y=7“關(guān)系運算”實際上是“比較運算”,即將兩個數(shù)據(jù)進(jìn)行比較,判定兩個數(shù)據(jù)是否符合給定的關(guān)系。例如,a>b中的>表示大于關(guān)系運算。如果a的值是5,b的值是3,則大于關(guān)系運算的結(jié)果為“真”,即條件成立;如果a的值是2,b的值是3,則大于關(guān)系運算的結(jié)果為“假”,即條件不成立。關(guān)系運算符
<(小于)<=(小于或等于)>(大于),
>=(大于或等于)==(等于)!=(不等于)注意:“等于”關(guān)系運算符是雙等號“==”,而不是單等號“=”(賦值運算符)。
2、關(guān)系運算符和關(guān)系表達(dá)式3.4運算符和表達(dá)式優(yōu)先級和結(jié)合性(1)>、>=、<、<=優(yōu)先于==、!=;(2)>、>=、<、<=的優(yōu)先級相同,結(jié)合性是從左至右;(3)==、!=的優(yōu)先級相同,結(jié)合性是從左至右。(4)關(guān)系運算符的優(yōu)先級低于算術(shù)運算符,但高于賦值運算符。關(guān)系表達(dá)式(1)概念關(guān)系表達(dá)式是指用關(guān)系運算符將兩個表達(dá)式連接起來進(jìn)行關(guān)系運算的式子。例如下面的關(guān)系表達(dá)式都是合法的:
a>b,a+b>c-d,(a=3)<=(b=5),'a'>='b',(a>b)==(b>c)
(2)關(guān)系表達(dá)式的值——邏輯值(非“真”即“假”)。2、關(guān)系運算符和關(guān)系表達(dá)式3.4運算符和表達(dá)式假設(shè)n1=3,n2=4,n3=5,則:(1)n1>n2的值是0。(2)(n1>n2)!=n3的值是1。(3)n1<n2<n3的值是1。(4)(n1<n2)+n3的值是6,因為n1<n2的值是1,1+5=6。注意:由于C語言沒有邏輯型數(shù)據(jù),用整數(shù)“1”表示“邏輯真”,用整數(shù)“0”表示“邏輯假”。所以,關(guān)系表達(dá)式的值,還可以參與其它種類的運算,例如算術(shù)運算、邏輯運算等。2、關(guān)系運算符和關(guān)系表達(dá)式3.4運算符和表達(dá)式關(guān)系表達(dá)式只能描述單一條件,例如x>=0。如果需要描述x>=0同時x<10,則需借助于邏輯表達(dá)式。邏輯運算符&& 邏輯與(相當(dāng)于“同時”)|| 邏輯或(相當(dāng)于“或者”)! 邏輯非(相當(dāng)于“否定”)例如下面的表達(dá)式都是合法的邏輯表達(dá)式:(x>=0)&&(x<10)(x<1)||(x>5)!(x==0)
(year%4==0)&&(year%100!=0)||(year%400==0)3、邏輯運算符和邏輯表達(dá)式3.4運算符和表達(dá)式運算規(guī)則例如,假設(shè)x=5,則(x>=0)&&(x<10)的值為“真”,(x<-1)||(x>5)的值為“假”。aba&&ba||b0(假)0(假)0(假)0(假)0(假)非0(真)0(假)1(真)非0(真)0(假)0(假)1(真)非0(真)非0(真)1(真)1(真)3、邏輯運算符和邏輯表達(dá)式3.4運算符和表達(dá)式優(yōu)先級和結(jié)合性(1)!優(yōu)先于雙目算術(shù)運算符優(yōu)先于關(guān)系運算符優(yōu)先于&&優(yōu)先于||;(2)單目邏輯運算符!和單目算術(shù)運算符的優(yōu)先級相同,結(jié)合性是從右至左;(3)雙目邏輯運算符&&和||的結(jié)合性是從左至右。邏輯表達(dá)式邏輯表達(dá)式是指用邏輯運算符將一個或多個表達(dá)式連接起來,進(jìn)行邏輯運算的式子。C語言中,用邏輯表達(dá)式表示多個條件的組合。例如(year%4==0)&&(year%100!=0)||(year%400==0)是判斷一個年份是否是閏年的邏輯表達(dá)式。3、邏輯運算符和邏輯表達(dá)式3.4運算符和表達(dá)式邏輯值的真假判定──0和非0C語言用整數(shù)1表示“邏輯真”、用0表示“邏輯假”。但在判斷一個數(shù)據(jù)的“真”或“假”時,卻以0和非0為根據(jù):如果為0,則判定為“邏輯假”;如果為非0,則判定為“邏輯真”。例如假設(shè)n=12,則!n的值=0,n>=1&&n<=31的值=1,n||n>31的值=1。說明(1)邏輯運算符兩側(cè)的操作數(shù),除可以是0和非0的整數(shù)外,也可以是其它任何類型的數(shù)據(jù),如實型、字符型等。3、邏輯運算符和邏輯表達(dá)式3.4運算符和表達(dá)式
(2)一旦“&&”和“||”能夠確定表達(dá)式的值,則不再繼續(xù)運算,即并不是所有的表達(dá)式都被運算。①對于邏輯與運算,如果第一個操作數(shù)被判定為“假”,系統(tǒng)不再判定或求解第二操作數(shù)。②對于邏輯或運算,如果第一個操作數(shù)被判定為“真”,系統(tǒng)不再判定或求解第二操作數(shù)。例如假設(shè)n1、n2、n3、n4、x、y的值分別為1、2、3、4、1、1,則求解表達(dá)式(x=n1>n2)&&(y=n3>n4)后,x的值變?yōu)?,而y的值不變,仍等于1。3、邏輯運算符和邏輯表達(dá)式3.4運算符和表達(dá)式賦值運算符
賦值運算符分為基本賦值運算符(又稱賦值運算符)、復(fù)合賦值運算符(+=、-=、*=、/=、%=、&=、^=、|=、<<=、>>=)。基本賦值運算符
基本賦值運算符即賦值運算符“=”,它是雙目運算符,賦值運算符的左邊必須是變量,右邊是表達(dá)式,其作用是將一個表達(dá)式的值賦給一個變量。
例如,x=5
y=(float)5/2如果表達(dá)式值的類型,與被賦值變量的類型不一致,但都是數(shù)值型或字符型時,系統(tǒng)自動地將表達(dá)式的值轉(zhuǎn)換成被賦值變量的數(shù)據(jù)類型,然后再賦值給變量。
4、賦值運算符和賦值表達(dá)式3.4運算符和表達(dá)式復(fù)合賦值運算復(fù)合賦值運算符由賦值運算符之前再加一個雙目運算符構(gòu)成。格式
變量雙目運算符=表達(dá)式
└─┬─┘
復(fù)合賦值運算符等價于
變量=變量雙目運算符(表達(dá)式)。
當(dāng)表達(dá)式為簡單表達(dá)式時,表達(dá)式外的一對圓括號才可缺省,否則可能出錯。例如,x+=3 /*等價于x=x+3*/y*=x+6 /*等價于y=y*(x+6),而不是y=y*x+6*/C語言規(guī)定的10種復(fù)合賦值運算符如下:+=,-=,*=,/=,%=; /*復(fù)合算術(shù)運算符(5個)*/&=,^=,|=,<<=,>>=; /*復(fù)合位運算符(5個)*/4、賦值運算符和賦值表達(dá)式3.4運算符和表達(dá)式優(yōu)先級和結(jié)合性(1)算術(shù)運算符優(yōu)先于關(guān)系運算符優(yōu)先于雙目邏輯運算符優(yōu)先于復(fù)合賦值運算符;(2)復(fù)合賦值運算符和賦值運算符的優(yōu)先級相同,結(jié)合性是從右至左。賦值表達(dá)式由賦值運算符或復(fù)合賦值運算符,將一個變量和一個表達(dá)式連接起來的表達(dá)式,稱為賦值表達(dá)式。格式變量=表達(dá)式變量復(fù)合賦值運算符表達(dá)式4、賦值運算符和賦值表達(dá)式3.4運算符和表達(dá)式又稱順序求值運算符,所連接起來的式子稱為逗號表達(dá)式。格式
表達(dá)式1,表達(dá)式2,……,表達(dá)式n求解過程自左向右,依次計算各表達(dá)式的值,“表達(dá)式n”的值即為整個逗號表達(dá)式的值。例如逗號表達(dá)式a=3*5,a*4的值=60,即先求解a=3*5,得a=15;再求a*4=60,所以逗號表達(dá)式的值是60。又如逗號表達(dá)式(a=3*5,a*4),a+5的值=20,即先求解a=3*5,得a=15;再求a*4=60;最后求解a+5=20,所以逗號表達(dá)式的值是20。注意:并不是任何地方出現(xiàn)的逗號,都是逗號運算符。很多情況下,逗號僅用作分隔符。5、逗號運算符和逗號表達(dá)式3.4運算符和表達(dá)式格式表達(dá)式1?表達(dá)式2:表達(dá)式3條件表達(dá)式中的表達(dá)式1、表達(dá)式2、表達(dá)式3的類型可以各不相同。運算規(guī)則如果“表達(dá)式1”的值為非0(即邏輯真),則運算結(jié)果等于“表達(dá)式2”的值;否則,運算結(jié)果等于“表達(dá)式3”的值。優(yōu)先級與結(jié)合性條件運算符的優(yōu)先級,高于賦值運算符,但低于關(guān)系運算符和算術(shù)運算符。其結(jié)合性為從右到左(即右結(jié)合性)。
6、條件運算符和條件表達(dá)式3.4運算符和表達(dá)式【例3-3】從鍵盤上輸入一個字符,如果是大寫字母,則將其轉(zhuǎn)換成小寫字母輸出;否則,直接輸出。#include<stdio.h>int
main(void){
charch;
printf("Inputacharacter:");
scanf("%c",&ch);
ch=(ch>='A'&&ch<='Z')?(ch+32):ch;
printf("ch=%c\n",ch); return0;}
6、條件運算符和條件表達(dá)式3.4運算符和表達(dá)式為了為了節(jié)省內(nèi)存空間,在系統(tǒng)中常將多個標(biāo)志狀態(tài)簡單地組合在一起,存儲到一個字節(jié)(或字)中。C語言提供了將標(biāo)志狀態(tài)從標(biāo)志字節(jié)中分離出來的位運算功能。位運算是按二進(jìn)制位進(jìn)行的運算,運算對象只能是整型(包括字符型)數(shù)據(jù),運算結(jié)果仍為整型。位運算符分為位邏輯運算符和位移位運算符。位邏輯運算符位邏輯運算符將數(shù)據(jù)中的每個二進(jìn)制位上的“0”或“1”作為邏輯值,按位進(jìn)行邏輯運算。位邏輯運算符分為按位非、按位與、按位或和按位異或(又稱按位加)四種。優(yōu)先級和結(jié)合性(1)~優(yōu)先于算術(shù)運算符優(yōu)先于關(guān)系運算符優(yōu)先于&優(yōu)先于^優(yōu)先于|優(yōu)先于雙目邏輯運算符;(2)~與單目的邏輯運算符、自增、自減、算術(shù)、長度運算符的優(yōu)先級相同,結(jié)合性是從右至左。
7、位運算符和位運算表達(dá)式3.4運算符和表達(dá)式按位與&
對應(yīng)位均為1時才為1,否則為0:3&9=1。例如,3&9=1:0011&1001 ──── 0001=1
其作用是取(或保留)1個數(shù)的某(些)位,其余各位置0。
按位或|
對應(yīng)位均為0時才為0,否則為1:3|9=11。例如,3|9=11:0011 |1001──── 1011=11
其作用是將1個數(shù)的某(些)位置1,其余各位不變。
7、位運算符和位運算表達(dá)式3.4運算符和表達(dá)式(3)按位異或^對應(yīng)位相同時為0,不同時為1:3^9=10。其作用是使1個數(shù)的某(些)位翻轉(zhuǎn)(即原來為1的位變?yōu)?,為0的變?yōu)?),其余各位不變。(4)按位取反~各位翻轉(zhuǎn),即原來為1的位變成0,原來為0的位變成1:在IBM-PC機(jī)中,~0=0xffff,~9=0xfff6。其作用是間接地構(gòu)造一個數(shù),以增強程序的可移植性。位移位運算符位移位運算符是將數(shù)據(jù)作為二進(jìn)制數(shù),進(jìn)行向左或向右移動若干位的運算,分為左移(<<)和右移(>>)兩種,均為雙目運算符,其中第一個運算對象是移位對象,第二個運算對象是移動的二進(jìn)制位數(shù)。移位規(guī)則優(yōu)先級和結(jié)合性(1)算術(shù)運算符優(yōu)先于位移位運算符優(yōu)先于關(guān)系運算符;(2)位移位運算符的優(yōu)先級相同,結(jié)合性是從左至右。無符號數(shù)左移舍去←←←…←←
←0補入無符號數(shù)右移補入0→→→…→→→舍去
有符號數(shù)左移舍去←←←…←←
←0補入
有符號數(shù)右移
→→…→→→舍去
格式長度運算符是單目運算符,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 研發(fā)中心廠房租賃及技術(shù)服務(wù)合同
- 教學(xué)課件流程
- 2024-2025學(xué)年安徽省江南十校高一下學(xué)期5月份聯(lián)考英語試題及答案
- 紡織品耐高溫性能測試標(biāo)準(zhǔn)考核試卷
- 品牌傳播與消費者生活方式關(guān)聯(lián)性分析考核試卷
- 座椅可調(diào)節(jié)扶手對使用姿勢的改善分析考核試卷
- 礦石煉制過程能源管理系統(tǒng)開發(fā)考核試卷
- 品牌跨界合作的潛在風(fēng)險與規(guī)避措施考核試卷
- 書店會員品牌故事講述與情感營銷策略考核試卷
- 醫(yī)療設(shè)備能源管理中的需求響應(yīng)策略研究考核試卷
- 物業(yè)工程維修作業(yè)安全操作指南
- 《鈴兒響叮當(dāng)?shù)淖冞w》教學(xué)設(shè)計(江蘇省市級優(yōu)課)-九年級音樂教案
- 裝修常用數(shù)據(jù)手冊(空間布局和尺寸)
- 處方銷毀申請登記表
- 河南省2014年中考語文現(xiàn)代文閱讀真題
- 外研版一起小學(xué)英語四下《Module-6Unit-1-Ill-draw-the-pictures》課件
- 三明市公安局招聘警務(wù)輔助人員考試歷年真題
- 冷鐓機(jī) 質(zhì)量要求技術(shù)條件
- 衛(wèi)生部手術(shù)分級目錄(2023年1月份修訂)
- LY/T 2121-2013檀香栽培技術(shù)規(guī)程
- 骨科出科試題帶答案
評論
0/150
提交評論