第2章 數(shù)據(jù)類型、運算符和表達式_第1頁
第2章 數(shù)據(jù)類型、運算符和表達式_第2頁
第2章 數(shù)據(jù)類型、運算符和表達式_第3頁
第2章 數(shù)據(jù)類型、運算符和表達式_第4頁
第2章 數(shù)據(jù)類型、運算符和表達式_第5頁
已閱讀5頁,還剩41頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第2章數(shù)據(jù)類型、運算符和表達式掌握C語言各種數(shù)據(jù)類型的定義及使用;了解各種類型數(shù)據(jù)在計算機內(nèi)的存儲方式;各種運算符的運算規(guī)則及結(jié)合律、優(yōu)先級;各種表達式的組成。教學目的:本章重點:

常用數(shù)據(jù)類型常用運算符、變量、表達式教學內(nèi)容:標識符的概念及作用C語言的基本數(shù)據(jù)類型,各種數(shù)據(jù)類型的定義、表示、存儲與使用各種數(shù)據(jù)類型的轉(zhuǎn)換C語言的運算符和表達式2.1C語言字符集與標識符任何高級語言都有它自身的一套字符集和使用規(guī)則,C語言也不例外。字符是組成語言的基本單位,C語言字符集由字母、數(shù)字、下劃線、空白符、標點符號和特殊字符組成。在字符常量,字符串常量和注釋中還可以使用漢字或其它可表示的圖形符號。(1)數(shù)字:0,1,…,9。(2)字母:大、小寫字母各26個:a,b,…,z和A,B,…,Z。C語言中大、小寫字母是有區(qū)別的,表示不同的字符。(3)空白符:空格符,制表符(跳格),換行符(空行)的總稱??瞻追嗽谧址?,字符串中有意義外,編譯系統(tǒng)忽略其它位置的空白。空白符在程序中只是起到間隔作用。在程序的恰當位置使用空白將使程序更加清晰,增強程序的可讀性。2.1.1C語言字符集(4)下劃線:_。(5)標點符和特殊字符。

+-*/%++--<>=>= <===!=!||&&^~|&<< >>()[]{}\“‘?:.,;(6)轉(zhuǎn)義字符(如下圖)。字符形式字符名含義\n換行把打?。@示)位置移到下一行的起始位置\t水平制表把打印位置移到當前的下一個制表點(通常移動8個字符的間隔),間隔的字符個數(shù)與實現(xiàn)有關(guān)\v垂直制表把打印位置移到下一行制表點起始位置\b退格把打印位置在當前行上向后退一個字符位置\r回車不換行,光標移到行首\f換頁把打印位置移到下一個邏輯頁開頭的起始位置\?問號問號字符\\反斜杠反斜杠字符本身“\”

\'單引號單引號字符

\"雙引號雙引號字符\a報警產(chǎn)生可聽或可見的報警(嘀聲),位置不變\0空字符空值

\ddd八進制1-3位8進制數(shù)對應的ASCII值代表的字符

\xhh十六進制

1-2位16進制數(shù)對應的ASCII值代表的字符2.1.2標識符

C語言中用來標識變量名、符號常量名、函數(shù)名、數(shù)組名、類型名、文件名的有效字符序列稱為標識符(Identifier),實際上標識符就是一個名字。C語言的標識符分為三類:預定義標識符、關(guān)鍵字標識符、自定義標識符。

1預定義標識符:預定義標識符主要有庫函數(shù)名(如main,printf,scanf,sin,abs等)、預編譯命令(如define)。

2關(guān)鍵字標識符:C語言中規(guī)定的具有特定含義的標識符。

3自定義標識符

(1)標識符由字母、數(shù)字、下劃線組成,且第一個字符必須為字母或下劃線,不能是數(shù)字。例如:合法的標識符:james,student,_total,count_1_2_3,PRICE。不合法的標識符:L.Jiang,$123,?xyz,45A3,x>y。

(2)大小寫敏感。標識符的大小寫是有區(qū)別的,如a和A是不同的標識符。

C語言中變量一般用小寫,常量一般用大寫,但也不是絕對,像windows編程中,常用匈牙利表示法(大小寫混用,每個單詞第一個大寫,其余小寫,單詞之間沒有空格,如WinMain,GetCurrentTime)。

(3)標識符長度:ANSIC標準沒有限制標識符長度(字符個數(shù)),不同編譯系統(tǒng)都有自已的規(guī)定。如TurboC規(guī)定為32個字符,MicrosoftC規(guī)定為8個字符。

(4)自定義標識符不能與關(guān)鍵字標識符同名,雖然可與預定義標識同名,但強烈建議不要與之相同,以免造成混淆,影響程序可讀性。

注意:標識的命名應做到“見名知意”

2.2常量和變量在程序運行中,其值不可改變的量稱為常量。用標識符命名的常量,稱為符號常量,通常用大寫字母。C語言中使用符號常量,有兩種聲明符號常量的方法:(1)用預處理命令#define來聲明一般形式:#define符號常量名常量值例如:

#definePI3.1416/*結(jié)尾處沒有分號*/

(2)用const聲明一般形式:const類型符號常量名=常量值;

例如:程序中多處用到π的值,可以聲明符號PI來表示。

constfloatPI=3.1416;

/*結(jié)尾處有分號*/2.2.1常量例2-1符號常量的使用。程序代碼如下:

#include<stdio.h> #definePI3.14 /*聲明符號常量PI*/ voidmain() { constfloatR=5.0;/*聲明符號常量R,后面有分號*/ floatr,area1,area2; /*聲明變量r,area1,area2*/

printf("r=");

scanf("%f",&r); /*用輸入函數(shù)scanf輸入半徑r的值*/ area1=PI*r*r; /*用圓面積計算公式PI*r*r的值并賦值給

area1*/

/*此處半徑是變量r*/ area2=PI*R*R; /*此處半徑是符號常量R*/ printf(“area1=%f,area2=%f\n”,area1,area2);/*輸出面積的值,\n表 示換行*/ }2.2.2變量

在程序運行中,其值可以改變的量稱為變量。一個變量必須有一個名字(即標識符),在內(nèi)存中占據(jù)一定的存儲單元。在該存儲單元中存放變量的值。注意區(qū)分變量名和變量值這兩個不同的概念。變量名實際上是一個符號地址,在對程序編譯連接時由系統(tǒng)給每一個變量名分配一個內(nèi)存地址。在程序中從變量中取值,實際上是通過變量名找到相應的內(nèi)存地址,從其存儲單元中讀取數(shù)據(jù)。見圖2-1。圖2-1變量值與變量名區(qū)別在C語言中,變量必須遵循“先定義,后使用”的原則。關(guān)于變量的定義、使用及賦初值將在2.3節(jié)中結(jié)合數(shù)據(jù)類型介紹。i變量名變量值存儲單元教室編號:3棟2013桌椅2.3基本數(shù)據(jù)類型

2.3.1C語言的數(shù)據(jù)類型單精度實型(float)雙精度實型(double)整型(int)字符型(char)數(shù)組類型結(jié)構(gòu)體類型(struct)共用體類型(union)枚舉類型(enum

)實型(浮點數(shù))基本類型構(gòu)造類型指針類型空類型(void)數(shù)據(jù)類型基本數(shù)據(jù)類型如下表說明:數(shù)據(jù)類型所占字節(jié)數(shù)隨機器硬件不同而不同,上表以IBMPC機為例:類型符號關(guān)鍵字數(shù)的表示范圍所占位數(shù)整型字符型實型有無(signed)int16-32768~32767(signed)short16-32768~32767(signed)long32-2147483648~214748364716unsigned

int0~65535320~4294967295unsigned

longunsigned

short160~65535有float323.4e-38~3.4e38有double641.7e-308~1.7e308有char8-128~127無unsignedchar80~2552.3.2整型數(shù)據(jù)

1整型常量三種形式:

十進制整數(shù):由數(shù)字0~9和正負號表示.如123,-456,0。

八進制整數(shù):由數(shù)字0開頭,后跟數(shù)字0~7表示.如0123,011

十六進制整數(shù):由0x或0X開頭,后跟0~9,a~f,A~F表示。

如0x123,0Xff2整型變量

整型變量使用前必須先定義,定義后系統(tǒng)為整型變量開辟存儲空間,用于存儲變量值。整型數(shù)據(jù)在內(nèi)存中是以二進制補碼形式存放的。例如:定義一個整型變量i:

inti; /*定義整型變量*/

i=5; /*給i賦以整數(shù)5*/

整型變量的基本類型符為int,也可根據(jù)數(shù)值范圍將變量定義為基本整型、短整型或長整型。在int之前加上修飾符:short(短型)或long(長型),也可在前面加上signed(有符號數(shù))和unsigned(無符號數(shù))。標準C語言的整型類型及取值范圍

關(guān)鍵字VisualC++6.0環(huán)境TurboC2.0環(huán)境所占字節(jié)取值范圍所占字節(jié)取值范圍int4-2147483648~21474836472-32768~32767unsigned[int]40~429496729520~65535short[int]2-32768~327672-32768~32767signed[int]4-2147483648~21474836472-32768~32767unsignedshort[int]20~6553520~65535signedshort[int]2-32768~327672-32768~32767long[int]4-2147483648~21474836474-2147483648~2147483647unsignedlong[int]40~429496729540~4294967295例2-2整型變量的定義與使用。程序代碼如下:

#include<stdio.h> voidmain() {

int

a,b,c,d; /*指定a、b、c、d為整型變量*/ unsignedu; /*指定u為無符號整型變量*/a=5;b=-6;u=20; c=a+u;d=b+u;

printf("a+u=%d,b+u=%d\n",c,d);/*整型在VC++中占內(nèi)存的字節(jié)數(shù)*/

printf("%d,%d,%d\n",sizeof(short),sizeof(int),sizeof(long)); }

3整型數(shù)據(jù)的溢出例2-3整型數(shù)據(jù)的溢出。程序代碼如下:

#include<stdio.h> voidmain() { shortint

a,b,c; a=32767;/*最大值賦給a*/ b=a+2;/*a+2并不等于32769,而是-32767*/ c=-a-3; /*-a-3并不等于-32770,而是32766*/

printf("a=%d,a+2=%d,-a-3=%d\n",a,b,c); }

觀察如下運行結(jié)果。

運行結(jié)果:

a=32767,a+2=-32767,-a-3=32766說明:

a+2為什么等于-32767而不是32769?這是由于整型數(shù)據(jù)在溢出時會“循環(huán)”取值,即當變量達到整型數(shù)據(jù)的最大值(或最小值)時,會從最小值(或最大值)一端移動取值,如下圖所示。

-327670……0……32766327672.3.3實型數(shù)據(jù)1實型常量

小數(shù)形式:它是由數(shù)的符號(+,-)、數(shù)字和小數(shù)點組成(注意:必須有小數(shù)點)。如-1.25、3.0、3.3等都是合法的實型小數(shù)形式。

指數(shù)形式:它是由尾數(shù)(整數(shù)或小數(shù))、階碼標示(E或e)和階碼組成。尾數(shù)不可缺?。ㄊ且徽麛?shù)或小數(shù)),階碼必須為整數(shù)。如1.25E-3、1e-5、-3E2等都是合法的指數(shù)形式,分別表示1.23*(10^(-3)).1*(10^(-5)),-3*(10^(2))

實型常量分為單精度、雙精度和長雙精度三種類型。實型常量如果沒有任何說明,則表示為雙精度常量,實型常量后加上F或f則表示單精度常量,實型常量后加上L或l則表示長雙精度常量。

2實型變量與實型常量一樣,C語言中的實型變量也分為單精度(float型)、雙精度(double型)和長雙精度型(longdouble)三類,不同類型在不同的編譯系統(tǒng)下取值范圍也是不是同的。標準C語言的實型類型及取值范圍

關(guān)鍵字VisualC++6.0環(huán)境TurboC2.0環(huán)境所占字節(jié)取值范圍所占字節(jié)取值范圍float4-3.4×10-38~+3.4×10384-3.4×10-38~+3.4×1038double8-1.7×10-308~+3.4×103088-1.7×10-308~+3.4×10308longdouble16-1.2×10-4932~+3.4×10493216-1.2×10-4932~+1.2×1049322.3.4字符型數(shù)據(jù)

1字符常量字符型常量是由一對單引號括起來的單個字符。它分為一般字符常量和轉(zhuǎn)義字符。一個字符常量在計算機的存儲中占據(jù)一個字節(jié)。(1)一般字符常量:一般字符常量是用單引號括起來的一個普通字符,其值為該字符的ASCII碼值。如‘a(chǎn)’、‘A’、‘0’、‘?’等都是字符常量,‘a(chǎn)’的值為97,‘A’的值為65,‘0’的值為48,‘?’的值為63。(2)轉(zhuǎn)義字符:C語言允許用一種特殊形式的字符常量,它是以反斜杠(\)開頭的特定字符序列,表示ASCII字符集中控制字符(如\n表示換行)、某些用于功能聲明的字符和其他字符。

2字符串常量用雙引號括起來的字符序列稱為字符串常量也稱字符串。如“c”、“”、“12345”,“Ateacher”等都是合法的字符串常量。字符或字符串在內(nèi)存中存儲的字符形式“Ateacher”Ateacher\0“c”c\0‘c’c“”\0

注意:字符串會在最后自動加上一個字符‘\0’,作為字符串結(jié)束標志,所以字符串實際占用字節(jié)數(shù)要比字符串中字符的個數(shù)(長度)多1個。

3字符變量

字符變量用來存放字符常量,請注意只能存放一個字符,不能存放一個字符串。字符變量的定義如下:

charc1,c2;

它表示c1和c2為字符型變量,各存放一個字符。可為字符變量賦值:c1=‘a(chǎn)’;c2=‘b’。除可以為字符變量賦字符常量外,還可以直接賦以整數(shù)。 例2-5向字符賦值 程序代碼如下:

#include<stdio.h> voidmain() { charc1,c2; c1='a';c2='b'; printf("c1=%d,c2=%d\n",c1,c2); c1=65;c2=66; printf("c1=%c,c2=%c\n",c1,c2);}2.3.5變量賦初值

類型說明符變量1=值1,變量2=值2,……;

如:inta=1,b=2,c=3;表示定義了三個變量a,b,c,并分別賦值1,2,3。但要注意不能寫成inta=b=c=3;

也可使被定義的變量的一部分賦初值。如:int

a,b,c=3;表示定義了變量a,b,c,只對c初始化,c的值為3。 需要注意的是,初始化并不是在編譯階段完成的,而是在程序運行時執(zhí)行本函數(shù)時賦予初值的,相當于一個賦值語句。如:

inta=5;相當于:

inta; /*指定a為整型變量*/ a=5/*賦值語句,將5賦給a*/2.4運算符和表達式運算符是表示實現(xiàn)某種運算的符號,C語言幾乎所有基本操作(除了控制語句和輸入輸出)都作為運算符處理。表達式是由運算符、常量、變量、函數(shù)、圓括號等按一定的規(guī)則組成的式子。每一個表達式也都具有一定的值。 簡單表達式:如:i,j,a,f。 復雜表達式:如:a+b,100+200,(a-b)*(c+d)。

C語言提供了13類,共34種運算符。C語言的運算符分類歸納如下:

(1)算術(shù)運算符:+-*/%++--

(2)關(guān)系運算符:><==>=<=!=

(3)邏輯運算符:!&&‖2.4.1運算符和表達式概述

(4)位運算符:<<>>~|∧&

(5)賦值運算符:=及其擴展賦值運算符

(6)條件運算符:?:

(7)逗號運算符:,

(8)指針運算符:*&

(9)求字節(jié)數(shù)運算符:sizeof

(10)強制類型轉(zhuǎn)換運算符:(類型)

(11)分量運算符:.和->

(12)下標運算符:[]

(13)其他:函數(shù)運算符()

C語言運算符需要從運算符的功能,運算對象的數(shù)據(jù)類型及個數(shù),運算符的優(yōu)先級,運算的結(jié)合性等方面掌握。

(1)據(jù)運算符的運算對象的個數(shù),C語言的運算符又分為單目運算符、雙目運算符和三目運算符。例如單目運算符++,雙目運算符(+,-,*,/等),三目運算符?:。

(2)運算符的優(yōu)先級運算符的優(yōu)先級是指不同的運算符在表達式中進行運算的先后次序。例如,算術(shù)運算符*、/的優(yōu)先級高于+、-的優(yōu)先級。

(3)運算符的結(jié)合性當一個運算對象的兩側(cè)的運算符的優(yōu)先級相同時,運算的結(jié)合方向稱為結(jié)合性。運算符的結(jié)合性分為左結(jié)合和右結(jié)合兩種。在C語言中,運算對象先與左面的運算符結(jié)合稱左結(jié)合,如+、-、*、/的結(jié)合方向為自左向右;運算對象先與右面的運算符結(jié)合稱右結(jié)合,如單目運算符++、--的結(jié)合方向是自右向左。實際上,只有單目運算符、三目運算符和賦值運算符的是右結(jié)合的,其他都是左結(jié)合。2.4.2算術(shù)運算符及算術(shù)表達式1.基本算術(shù)運算符:基本算術(shù)運算符包括:+、-、*、/、%。2.自增、自減運算符:自增(++)和自減(--)運算符是單目運算符,其功能是使變量的值增1或減1。它們既可以作前綴運算符,如++i,--i;也可以作后綴運算符,如i++,i--。作為前綴和后綴運算符的處理方法是不同的:

++i,--i在使用i之前,先使i的值加(減)1。若i值為5,x=++i,則x為6,i值為6。

i++,i--在使用i之后,使i的值加(減)1。若i值為5,x=i++,則x值為5,i值為6。

自增或自減運算符在使用時,需要注意以下幾點:(1)運算符的操作對象,只能是變量,而不能作用于常量或表達式。(2)運算符的優(yōu)先級高于基本算術(shù)運算符,結(jié)合性是“自右向左”右 結(jié)合。

3.算術(shù)表達式算術(shù)表達式:用算術(shù)運算符和括號將運算對象連接起來的、符合C語法規(guī)則的式子,稱為算術(shù)表達式。運算對象可以是常量、變量、函數(shù)等。說明:

(1)C語言算術(shù)表達式的乘號(*)不能省略。例如:數(shù)學式,相應的C表達式應該寫成:x*y。

(2)C語言表達式中只能出現(xiàn)字符集允許的字符。例如:數(shù)學上求圓的面積s=π*r^2,相應的C表達式應該寫成:PI*r*r(其中PI是已經(jīng)聲明的符號常量)。

(3)C語言算術(shù)表達式只使用圓括號改變運算的優(yōu)先順序(不能用{}和[])??梢允褂枚鄬訄A括號,此時左右括號必須配對,運算時從內(nèi)層括號開始,由內(nèi)向外依次計算表達式的值。例2-7算術(shù)運算符表達式的使用。程序代碼如下:

#include<stdio.h>voidmain(){

inta,b,c,x1,x2,x3,x4; floatd,e,y1,y2; d=6.4; e=9.6; y1=d+e/d-e; y2=(d+e)/(d-e); printf("y1=%f,y2=%f\n",y1,y2); a=5; b=2; c=6; x1=a+b*c-a/b+b%c*a; x2=(a+b)*c-(a/b)+(b%c)*a; x3=a%b; x4=a/b; printf("x1=%d,x2=%d,x3=%d,x4=%d\n",x1,x2,x3,x4);}

例2-7中,y1和y2,x1和x2均使用相同的運算符和變量,但在程序的可讀性上y1,x1明顯不如y2,x2,因此在平時編寫代碼時要盡量減少復雜表達式的使用,如果實在需要,可以添加括號,使程序具有更好的可讀性。當然加了括號會改變表達式的計算順序,從而改變表達式的結(jié)果。上例x4的值可以看到,如果運算符“/”兩邊都是整型時,其結(jié)果也是整型。例2-8自增自減的作用。程序代碼如下:

#include<stdio.h>voidmain(){

int

i,j; floatx,y,y1,y2,y3; i=5; x=3.6; j=++i; /*前綴*/ y=++x; /*前綴*/

printf("i=%d,j=%d,x=%f,y=%f\n",i,j,x,y); j=i++; /*后綴*/ y=x++; /*后綴*/

printf("i=%d,j=%d,x=%f,y=%f\n",i,j,x,y); i=5,x=3.5; y1=++i+x*i+++i;/*復雜表達式1*/ printf("y1=%f\n",y1); i=5,x=3.5; y2=(++i)+x*i+(++i);/*復雜表達式2*/ printf("y2=%f\n",y2); i=5,x=3.5; y3=(++i)+x*(i++)+i;/*復雜表達式3*/ printf("y3=%f\n",y3);}

例2-8中,j和y的值可以看出自增自減運算中前綴和后綴的區(qū)別,前綴是先加減后賦值,而后綴是先賦值后加減。從y1,y2,y3可知,y1和y3的計算順序是相同的,為什么y1和y2的值不同呢,即x*i+++i的結(jié)合順序是x*(i++)+i而不是x*i+(++i),這是因為++、--運行算的優(yōu)先級高于+運算符,因此前面兩個“+”結(jié)合在一起,成為“(++)+”的形式。需要說明的是,這種形式在實際應用中盡量不要使用,因為程序的可讀性不好。2.4.3關(guān)系運算符及關(guān)系表達式

1.關(guān)系運算符關(guān)系運算是邏輯運算中比較簡單的一種。所謂“關(guān)系運算”實際上是“比較運算”。關(guān)系運算符是對兩個值進行比較運算,判定兩個數(shù)據(jù)是否符合給定的關(guān)系。若符合給定的關(guān)系,則關(guān)系成立,取真值(1),否則取假值(0)。

C語言中的關(guān)系運算符有6種,按優(yōu)先級分為兩組:優(yōu)先級6:>(大于),<(小于),>=(大于等于),<=(小于等于)

優(yōu)先級7:==(等于),!=(不等于)

2.關(guān)系表達式用關(guān)系運算符將兩個表達式連接起來的符合C語法規(guī)則的式子稱為關(guān)系表達式。關(guān)系表達式的運算結(jié)果是一個邏輯值,即“真”或“假”。在C語言中關(guān)系運算結(jié)果為真,以整數(shù)1表示,結(jié)果為假,以整數(shù)0表示。例如:有intx=2,y=3;

則有:表達式表達式的值

x==y0

x+y>50x!=51

關(guān)系運算符的優(yōu)先級低于算術(shù)運算符的優(yōu)先級,且等于(==)和不等于(!=)的優(yōu)先級低于另外四種運算符的優(yōu)先級。關(guān)系運算符的結(jié)合性是左結(jié)合性。例2-9關(guān)系運算表達式。程序代碼如下:

#include<stdio.h>voidmain(){

int

a,b,c,d,x,y; a=3,b=2,c=1,d=0; x=(a>b); y=(a>b>c);

printf("a=%d,b=%d,c=%d,d=%d\n",a,b,c,d);

printf("a>b的值為%d\na>b>c的值為%d\n",x,y); x=(d==c); y=(d=c);

printf("d==c的值為%d\nd=c的值為%d\n",x,y);}

例2-9中,a>b即3>2結(jié)果為真,其值為1。a>b>c,即3>2>1的值卻為0,因為“>”運算符的結(jié)合方向是自左向右,先執(zhí)行“a>b”得1,再執(zhí)行“1>c”得0?!癲==c”的值為0,而“d=c”的值為1,因為判斷是否等于要用“==”運算符,而“=”是賦值運算符,表示將d的值賦值給c,得到1,賦給y。2.4.4邏輯運算符及邏輯表達式1.邏輯運算符運算符運算名稱運算法則結(jié)合性&&邏輯與當兩個操作對象都為“真”時,運算結(jié)果為“真”,其他情況運算結(jié)果都為“假”。左結(jié)合||邏輯或只有當兩個操作對象都為“假”,運算結(jié)果才為“假”,其他情況運算結(jié)果都為“真”。左結(jié)合!邏輯非當操作對象為“真”時,運算結(jié)果為“假”;當操作對象為“假”時,運算結(jié)果為“真”。右結(jié)合2.邏輯表達式

邏輯表達式中如果包含多個邏輯運算符,如:!a&&b||x>y&&c

(1)?。ǚ牵?&(與)→||(或),即“!”為三者中最高的。(2)邏輯運算符中的“&&”和“||”低于關(guān)系運算符,“!”高于算術(shù)運算符。邏輯運算的真值表如下ab!a!ba&&ba||b0011000非01001非000101非0非000112.4.5條件運算符及條件表達式

1.條件運算符

條件運算符是“?:”,是C語言中唯一的三目運算符。可以代替if--else語句的完成簡單的條件求值。

2.條件表達式 由條件運算符將兩個表達式連接起來的符合C語法規(guī)則的式子稱為條件表達式。 條件表達式的一般構(gòu)成形式:

表達式1?表達式2:表達式3

運算過程:先計算表達式1的值,若為“真”,則計算表達式2的值,整個條件表達式的值就是表達式2的值;若表達式1的值為“假”,則計算表達式3的值,整個條件表達式的值就是表達式3的值。

思考:max=(x>y)?x:y;max=?

例2-11大小寫字母轉(zhuǎn)換。輸入一個字符,如果是大寫字母,則轉(zhuǎn)換成小寫字母,如果是小寫字母,則轉(zhuǎn)換成大寫字母,其他字符不變。 程序代碼如下:

#include<stdio.h> voidmain() { charch,c1,c2,c3;

scanf("%c",&ch); c1=(ch>='A'&&ch<='Z')?ch+32:ch; /*只做大寫轉(zhuǎn)小寫*/ c2=(ch>='a'&&ch<='z')?ch-32:ch;/*只做小寫轉(zhuǎn)大小*/

/*大寫轉(zhuǎn)小寫,小寫轉(zhuǎn)大寫*/

c3=(ch>='A'&&ch<='Z')?ch+32:((ch>='a'&&ch<='z')?ch-32:ch); printf("%c,%c,%c\n",c1,c2,c3); }

分析以上程序,運行并觀察運行結(jié)果。2.4.6賦值運算符及賦值表達式

1.賦值運算符 C語言的賦值運算符為“=”,其作用是將賦值運算符右側(cè)的表達式的值賦給其左側(cè)的變量。例如:

x=4; /*將4賦給變量x*/y=2*x*x+4*a;/*將表達式之值賦給變量y*/

2.賦值表達式

由賦值運算符將一個變量和一個表達式連接起來的式子稱作賦值表達式。 它的一般形式為:

變量=表達式

運算過程:先計算賦值運算符右側(cè)的“表達式”的值,將賦值運算符右側(cè)“表達式”的值賦值給左側(cè)的變量,整個賦值表達式的值就是被賦值變量的值。 例如:a=b=c=5;則a=5,b=5,c=5。3.復合賦值運算符及其表達式

C語言允許在賦值運算符“=”之前加上其他運算符,構(gòu)成復合運算符。

C語言可使用的復合賦值運算符有10種。它們是:

+=、-=、*=、/=、%=(與算術(shù)運算符組合)

<<=、>>= (與位移運算符組合)

&=、∧=、|= (與位邏輯運算符組合) 復合賦值表達式的一般形式為:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論