版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第第1 1章章 C+C+基礎(chǔ)知識(shí)基礎(chǔ)知識(shí) 1.1 程序設(shè)計(jì)語言的基本概念1.2 C+程序的基本結(jié)構(gòu) 1.3 一個(gè)應(yīng)用程序的開發(fā)過程 1.4 C+的詞法規(guī)則 1.5 C+基本數(shù)據(jù)類型(重點(diǎn))1.6 常量與變量 1.7 運(yùn)算符與表達(dá)式(重點(diǎn)、難點(diǎn))程序設(shè)計(jì)語言程序設(shè)計(jì)語言是人類在計(jì)算機(jī)上解決實(shí)際問題的一種工具。計(jì)算機(jī)求解問題的過程:計(jì)算機(jī)可解的實(shí)際問題實(shí)際問題數(shù)學(xué)模型 程序設(shè)計(jì)語程序設(shè)計(jì)語言的表達(dá)形式言的表達(dá)形式(程序程序) 計(jì)算機(jī)執(zhí)行程序結(jié)果。 1.1 程序設(shè)計(jì)語言的基本概念1. 面向過程的結(jié)構(gòu)化程序設(shè)計(jì)語言2. 面向?qū)ο蟮某绦蛟O(shè)計(jì)語言有兩類(1)一類是完全面向?qū)ο蟮恼Z言。(2)另一類是兼顧面向
2、過程和面向?qū)ο蟮幕旌鲜秸Z言。如:C+語言。 程序設(shè)計(jì)語言類型:1.2 C+程序的基本結(jié)構(gòu) 1.2.1 C+程序結(jié)構(gòu) 一般來說,C+程序的結(jié)構(gòu)包含兩個(gè)部分:聲明區(qū)、函數(shù)區(qū)聲明區(qū)、函數(shù)區(qū)在任何一個(gè)區(qū)內(nèi)都可以隨時(shí)插入程序的注釋注釋。 【例1.1】從鍵盤輸入圓的半徑,求圓的面積。程序代碼如下:/*ex1_1.cpp*#include using namespace std;#define PI 3.14159float sum(float x);void main() float r,s; coutr; s=sum(r); coutr=r s= sendl;float sum(float x) ret
3、urn PI*x*x;函數(shù)函數(shù)聲明注釋注釋1聲明區(qū)聲明區(qū)在函數(shù)之外。程序的聲明區(qū)可能需要編寫:(1)包含文件,如例1.1中的#include ;(2)宏定義,如例1.1中的#define PI 3.14159;(3)函數(shù)聲明,如例1.1中的float sum(float x);(4)條件編譯;(5)全局變量聲明;(6)結(jié)構(gòu)體等的定義;(7)類的定義。2函數(shù)區(qū)一個(gè)程序必須有一個(gè)主函數(shù)main();還可以有和n個(gè)其他函數(shù)(n0 )。每個(gè)函數(shù)的組成分為兩部分:函數(shù)頭(首行) 函數(shù)體(花括號(hào) 里的全部?jī)?nèi)容)。函數(shù)頭描述:函數(shù)值類型、函數(shù)名、函數(shù)參數(shù)的類型與參數(shù)名稱。函數(shù)體描述:函數(shù)內(nèi)部用到的變量、各種
4、操作處理、函數(shù)值返回。任何一種程序設(shè)計(jì)語言可用下面的模型描述:一種程序設(shè)計(jì)語言的模型與人類的自然語言模型是一致的,都遵守這種模型。讀者可以借鑒人類自然語言的學(xué)習(xí)方法來學(xué)習(xí)某種程序設(shè)計(jì)語言。1.2.2 C+程序的書寫格式程序的書寫格式(1)一般每行寫一條語句;也可以將一條語句寫在多行上。(2)每條語句都以分號(hào)結(jié)束(末尾無分號(hào)的行,一般不叫語句,可以稱之為命令)。(3)低層次的語句可以相對(duì)于上級(jí)層次向右縮進(jìn)書寫,層次分明;多條語句可以用花括號(hào)包起來成為一條復(fù)合語句。(4)兩種注釋符:多行注釋的形式用:/* .*/占據(jù)多行。單行注釋以雙斜杠“/”開頭,占據(jù)一行。1.3 一個(gè)應(yīng)用程序的開發(fā)過程 1.3
5、.1 Visual C+ 6.0開發(fā)環(huán)境 采用Visual C+ 6.0開發(fā)環(huán)境 ;這是一個(gè)集編輯、編譯、鏈接、調(diào)試運(yùn)行于一體的集成環(huán)境,即在一個(gè)程序的控制下可以分步或一次性地完成編輯、編譯、鏈接、調(diào)試運(yùn)行工作。1.3.2 一個(gè)應(yīng)用程序的開發(fā)過程 1啟動(dòng)Visual C+ 6.0開發(fā)環(huán)境 2創(chuàng)建工程項(xiàng)目 3打開項(xiàng)目文件 4創(chuàng)建C+源程序文件并添加到項(xiàng)目文件中 5編譯、鏈接與運(yùn)行程序 在上頁圖中單擊“Compile”按鈕進(jìn)行編譯,單擊“Build”按鈕進(jìn)行編譯與鏈接(在沒有編譯的情況下),單擊“Execute Program”按鈕進(jìn)行編譯、鏈接和運(yùn)行(在沒有編譯、鏈接的情況下)。例1.1程序所建
6、立的項(xiàng)目的運(yùn)行結(jié)果如下:1.4 C+的詞法規(guī)則 1.4.1 C+的字符集組成 C+的字符集包括如下字符:(1)26個(gè)小寫字母:az。(2)26個(gè)大寫字母:AZ。(3)10個(gè)數(shù)字:09。(4)標(biāo)點(diǎn)和特殊字符:+ - * / , : ; ? | ! # % & ( ) 空格。(5)空字符:ASCII碼為0的字符,用作字符串的結(jié)束符。1.4.2 C+的單詞及其構(gòu)詞規(guī)則 單詞由若干個(gè)合法字符組成,下面介紹常用的單詞。1標(biāo)識(shí)符標(biāo)識(shí)符 標(biāo)識(shí)符是由字母、下畫線和數(shù)字組成的字符序列,且第一個(gè)字母不能是數(shù)字。標(biāo)識(shí)符中的字母大小寫是不同的。標(biāo)識(shí)符用來命名C+程序中的常量、變量、函數(shù)、語句標(biāo)號(hào)及類型定義符等
7、。有一部分標(biāo)識(shí)符是系統(tǒng)定義的。本小節(jié)關(guān)心的是用戶定義的標(biāo)識(shí)符。 在定義標(biāo)識(shí)符時(shí),要注意以下幾點(diǎn):(1)要遵守上面的構(gòu)成標(biāo)識(shí)符的規(guī)則。Aa、ABC、A_Y、ycx11、_name是合法標(biāo)識(shí)符。而5xyz、m.x、!abc、x-y是非法標(biāo)識(shí)符。(2)系統(tǒng)已經(jīng)使用的關(guān)鍵字、函數(shù)名或其他已定義的單詞不能再定義成標(biāo)識(shí)符。(3)定義標(biāo)識(shí)符時(shí)盡可能讓標(biāo)識(shí)符有意義,便于閱讀,即做到“見名知義”。 2 2關(guān)鍵字關(guān)鍵字關(guān)鍵字(又稱保留字)是被系統(tǒng)定義了的已具有特定含義的標(biāo)識(shí)符。如:main, if, int 等。3 3運(yùn)算符運(yùn)算符運(yùn)算符用來連接操作數(shù)組成表達(dá)式。只需要1個(gè)操作數(shù)的運(yùn)算符稱為單目運(yùn)算符,需要2個(gè)操作
8、數(shù)的運(yùn)算符稱為雙目運(yùn)算符,需要3個(gè)操作數(shù)的運(yùn)算符稱為三目運(yùn)算符。4 4常量常量常量是在程序中不改變的量。C+程序中的常量有:整型常量、浮點(diǎn)型常量、字符常量和字符串常量4種。將在1.6節(jié)中詳細(xì)介紹。5 5變量變量變量是在程序中可以改變的量。變量有三要素:名字、類型和值。某個(gè)變量的值被改變后,將一直保持到下一次被改變。變量是一種標(biāo)識(shí)符,其命名完全與標(biāo)識(shí)符相同。將在1.6節(jié)中詳細(xì)介紹其特性。 6 6注釋符注釋符注釋符的作用是在程序中標(biāo)識(shí)注釋信息。多行注釋以“/*”開始,以“ */ ”結(jié)束,占據(jù)多行。單行注釋以“/”開始,占據(jù)一行。7 7分隔符分隔符分隔符有:空格符、換行符、水平制表符、逗號(hào)(,) 、
9、分號(hào)(;) 、冒號(hào)(:)。 1.5 C+基本數(shù)據(jù)類型 表1-2 C+基本數(shù)據(jù)類型基本型(int)短整型(short)長(zhǎng)整型(long)無符號(hào)整型(unsigned int)無符號(hào)短整型(unsigned short int)無符號(hào)長(zhǎng)整型(unsigned long int)有符號(hào)整型(signed int)有符號(hào)短整型(signed short int)有符號(hào)長(zhǎng)整型(signed long int)字符型(char)單精度浮點(diǎn)型(float)雙精度浮點(diǎn)型(double)長(zhǎng)雙精度浮點(diǎn)型(long double)4244244241488-2 147 483 6482 147 483 647-32
10、 76832 767-2 147 483 6482 147 483 64704 294 967 295065 53504 294 967 295-2 147 483 6482 147 483 647-32 76832 767-2 147 483 6482 147 483 6470255-3.410383.41038-1.7103081.710308-1.7103081.710308數(shù) 據(jù) 類 型占用內(nèi)存 字節(jié)數(shù)數(shù)據(jù)表達(dá)范圍1.6 常量與變量 常量與變量是C+中最基本的數(shù)據(jù)描述形式。本節(jié)只介紹常量和變量的基本概念,包括4種常量和基本數(shù)據(jù)類型的變量。1.6.1 常量常量是在程序中不改變的量不改變的
11、量。C+程序中有4種基本常量:整型常量、浮點(diǎn)型常量、字符常量、字符串常量。 1整型常量C+程序中,整型常量和浮點(diǎn)常量統(tǒng)稱數(shù)值常量。整型常量有三種形式:十進(jìn)制、八進(jìn)制和十六進(jìn)制。十進(jìn)制常量的寫法就是算術(shù)表達(dá)方式,如:12、345都是合法的十進(jìn)制常量。八進(jìn)制常量在數(shù)值前要加上一個(gè)零(0),如:011、077都是合法的八進(jìn)制常量。十六進(jìn)制常量的寫法是在數(shù)值前加上一個(gè)零(0)和一個(gè)字母X(大小寫均可),如0X11、0 xF都是合法的十六進(jìn)制常量,分別等于十進(jìn)制數(shù)17和15。 2浮點(diǎn)型常量浮點(diǎn)型常量又稱實(shí)數(shù)型常量。分為十進(jìn)制數(shù)形式和指數(shù)形式兩種表示方法。(1)十進(jìn)制數(shù)形式的浮點(diǎn)型常量的書寫格式:.其中小
12、數(shù)點(diǎn)不能省略。如:1.2345、1.0、1.、.12345均是合法的浮點(diǎn)型常量。(2)指數(shù)形式的浮點(diǎn)型常量的書寫格式:.E其中,指數(shù)形式表示符“E”大小寫均可。.部分允許不含小數(shù)點(diǎn)的,或含小數(shù)點(diǎn)的,必須是整數(shù)必須是整數(shù)。如12E-3、0.1E2、.12345E6、0E0等均是合法的。 【例例1.2】浮點(diǎn)型常量的運(yùn)用。浮點(diǎn)型常量的運(yùn)用。/*ex1_2.cpp*#include #include using namespace std;void main() int x=77; float a; double b; long double c; a=88.12300000000000000000f
13、; b=-1.69901234567890123456789e308; c=-1.69901234567890123456789e308; coutx=xendl; couta=setprecision(7)aendl; couta=setiosflags(ios:scientific)aendl; coutsetprecision(20)b=b; couttc=cendl;3字符常量字符常量是一個(gè)用單引號(hào)括起來的字符。由于單引號(hào)是字符常量的定界符,單引號(hào)本身的表示則要加反斜杠,成為如下形式:。反斜杠在字符表達(dá)中有重要作用,一些特殊字符必須用帶的形式表示,如:n-換行符,作用等同于endl;t
14、-制表符,作用是使光標(biāo)右移一定空格距離;0-空字符,用作字符串結(jié)束標(biāo)記。在C+中,字符常量具有整數(shù)值,其值是該字符的ASCII碼。一個(gè)字符常量可以與整數(shù)進(jìn)行加減運(yùn)算?!纠?.3】字符常量的運(yùn)用。字符常量的運(yùn)用。/*ex1_3.cpp*#include #include Using namespace std;void main() char a,b,c,d; a=A; b=B; c=a+3; d=; coutatbtcendl;couthexint(a)tint(b)tint(c)endl; coutdendl; 程序的運(yùn)行結(jié)果如下:ABD414244 4字符串常量字符串常量是用雙引號(hào)括起來
15、的若干個(gè)字符組成的字符序列。由于雙引號(hào)是字符串常量的定界符,雙引號(hào)本身表示成。是一個(gè)空字符串,空字符串中沒有任何有效字符,只有一個(gè)字符串結(jié)束符。在C+程序中,任何一個(gè)字符串常量都有一個(gè)結(jié)束符,該結(jié)束符是ASCII碼值為0的空字符,表示為0。字符常量與字符串常量是不同的,表現(xiàn)在:(1)表示形式不同。前者用單引號(hào)括起來,后者用雙引號(hào)括起來。(2)存放它們的對(duì)象不同。前者存放在字符變量中,后者存放在字符數(shù)組或字符指針指定的位置。如,char c=A, s5=ABCD;(3)存放字符串常量時(shí)要加一個(gè)結(jié)束符,而存放字符常量則不需要。所以A與A不同。且其占用的內(nèi)存空間也不同,A占1個(gè)字節(jié);A占2個(gè)字節(jié),前
16、一字節(jié)存放字符A,后一字節(jié)存放結(jié)束符。(4)對(duì)它們進(jìn)行的運(yùn)算也不同。字符與字符、字符與整數(shù)間可作加減運(yùn)算;而字符串只能作連接運(yùn)算。 【例例1.4】字符串常量的運(yùn)用。字符串常量的運(yùn)用。/*ex1_4.cpp*#include using namespace std;void main() char s180,s280; couts1s2; couts1ts2endl;程序的運(yùn)行結(jié)果如下:5 5符號(hào)常量符號(hào)常量符號(hào)常量是一個(gè)用來替代常量(前面討論的4種常量)的標(biāo)識(shí)符。這個(gè)標(biāo)識(shí)符當(dāng)然叫符號(hào)常量。(1)增強(qiáng)程序的可讀性。標(biāo)識(shí)符可以定義得有意義,如用PI表示圓周率。(2)書寫簡(jiǎn)單,不易出錯(cuò)。有的常量直接
17、書寫很長(zhǎng),容易出錯(cuò),如圓周率3.141 592 6用PI代之,既簡(jiǎn)單又不容易出錯(cuò)。(3)修改程序方便。 例如:#define PI 3.1415926#define SIZE 100 1.6.2 變量 變量是在程序中可以改變的量,變量有名字、類型和值三個(gè)要素。變量的類型包括存儲(chǔ)類和數(shù)據(jù)類型兩個(gè)方面。某個(gè)變量的值被改變后,將一直保持到下一次被改變。 1變量的定義變量在使用前必須定義。格式如下: ;例如:int a, b, c; a、b、c為整型變量。因缺省存儲(chǔ)類,若該語句是定義在函數(shù)體內(nèi),則a、b、c的存儲(chǔ)類為自動(dòng)類;若該語句是定義在函數(shù)體外,則a、b、c的存儲(chǔ)類是外部類。static doub
18、le x, y 10 ; static表示:x、y是靜態(tài)變量;double表示: x、y是雙精度變量;10表示: y是數(shù)組。 2 2變量的數(shù)據(jù)類型變量的數(shù)據(jù)類型變量的基本數(shù)據(jù)類型有:整型、浮點(diǎn)型和字符型。變量的構(gòu)造數(shù)據(jù)類型稱自定義類型。它由若干個(gè)數(shù)據(jù)類型相同或不相同的變量所構(gòu)成。如數(shù)組、結(jié)構(gòu)體、共用體、類都是構(gòu)造數(shù)據(jù)類型。3 3變量的存儲(chǔ)類變量的存儲(chǔ)類( (在第在第3 3章詳細(xì)介紹章詳細(xì)介紹)變量的存儲(chǔ)類定義變量的有效性范圍,即作用域。C+中有4類:自動(dòng)存儲(chǔ)類(auto)、寄存器存儲(chǔ)類(register)、靜態(tài)存儲(chǔ)類(static)和外部存儲(chǔ)類(extern)。 【例例1.5】定義在前、引用在
19、后的外部存儲(chǔ)類變量定義在前、引用在后的外部存儲(chǔ)類變量s1、s2。程序代碼如下:程序代碼如下:/*ex1_5.cpp*#include using namespace std;char s180, s280; /變量變量s1與與s2的定義在前的定義在前void main() couts1s2; /變量變量s1與與s2的引用在后的引用在后 couts1ts2endl; 【例1.6】定義在后、引用在前的外部存儲(chǔ)類變量定義在后、引用在前的外部存儲(chǔ)類變量s1、s2。程序代碼如下:/*ex1_6.cpp*#include using namespace std;void main() extern cha
20、r s180, s280; /聲明聲明外部存儲(chǔ)類變量外部存儲(chǔ)類變量(多此句多此句) couts1s2; /變量變量s1與與s2的引用在前的引用在前 couts1ts2endl; char s180, s280; /變量變量s1與與s2的定義在后的定義在后4變量的值變量的值是變量三要素之一。可以在定義變量時(shí)對(duì)變量賦初值(變量初始化);也可以在引用變量時(shí)通過其他方法(賦值表達(dá)式、cin、scanf函數(shù)等)對(duì)變量賦值。變量初始化格式:=,=,;變量初始化規(guī)則:變量初始化規(guī)則:外部類和靜態(tài)類變量如果不進(jìn)行初始化,那么它們由編譯程序賦以“默認(rèn)初始值”(數(shù)值型變量默認(rèn)初值為數(shù)值0,字符型變量默認(rèn)初值為空字
21、符0)。外部類和靜態(tài)類變量初始化 (時(shí)段)是在編譯時(shí)一次性給定初值。自動(dòng)類和寄存器類變量如果不進(jìn)行初始化,那么它們的初值是不確定的(隨機(jī)、人們無法知道);因此盲目使用這樣的未初始化變量是危險(xiǎn)的(可能導(dǎo)致無意義情況出現(xiàn):比如導(dǎo)致分母為0、根號(hào)里面是負(fù)數(shù))。自動(dòng)類和寄存器類變量的初始化(時(shí)段)是在每次進(jìn)入函數(shù)體時(shí)重新定義初值。 變量有定義定義和引用引用兩個(gè)方面。變量的定義涉及變量名稱、存儲(chǔ)類和數(shù)據(jù)類型。引用引用即使用使用,通常先定義,后使用。例1.6是特例,但在使用前必須作出說明說明(聲明聲明)。下面是一些合法的定義:int a=1, b=2, c=3;Static char xyz=A, buf
22、fer10=Hello;double a5=1.12345,2.23456,3.34567,4.45678,5.56789;float s=1+2+3;用語句給變量賦值: int a; a=12; /此語句給變量a賦值12“a=12”本來是一個(gè)賦值表達(dá)式賦值表達(dá)式。C+允許表達(dá)式表達(dá)式當(dāng)作語句使用,只要在表達(dá)式后面加上分號(hào),就成為表達(dá)式語句;所以“ a=12;”是賦值表達(dá)式語句賦值表達(dá)式語句(有時(shí)簡(jiǎn)稱為賦值語句)賦值語句)。 1.7 運(yùn)算符與表達(dá)式 C+的表達(dá)式包括算術(shù)表達(dá)式、關(guān)系表達(dá)式、邏輯表達(dá)式、賦值表達(dá)式、條件表達(dá)式和逗號(hào)表達(dá)式。1.7.1 算術(shù)運(yùn)算符與算術(shù)表達(dá)式 1算術(shù)運(yùn)算符(1)單目
23、算術(shù)運(yùn)算符: -(取負(fù))、+(增1)、-(減1)。(2)雙目算術(shù)運(yùn)算符: +(加)、-(減)、*(乘)、/(除)、%(取余)。 單目運(yùn)算符的優(yōu)先級(jí)高于雙目運(yùn)算符的優(yōu)先級(jí);*、/、% 的優(yōu)先級(jí)高于 +、- 的優(yōu)先級(jí)。+、-運(yùn)算符號(hào)既可以寫在變量前,也可以寫在變量后,分別稱作前綴運(yùn)算和后綴運(yùn)算。前綴運(yùn)算(+x, -x):先改變變量的值,再使用變量的(新)值;后綴運(yùn)算(x+, x-):先使用變量的值,再改變變量的值。 【例例1.7】前綴、后綴運(yùn)算表達(dá)式的運(yùn)用。前綴、后綴運(yùn)算表達(dá)式的運(yùn)用。程序代碼如下:程序代碼如下:/*ex1_7.cpp*#include using namespace std;vo
24、id main() int i=10, a, b, j=i+10, x, y; /初值可以是初值可以是(包含包含已知已知變量的變量的)表達(dá)式表達(dá)式 a=+i; couta=ati=iendl; b=i+; coutb=bti=iendl; x=-j; coutx=xtj=jendl; y=j-; couty=ytj=jendl; 程序的運(yùn)行結(jié)果如下程序的運(yùn)行結(jié)果如下:取余運(yùn)算只能用于兩個(gè)整型數(shù)的運(yùn)算。功能是求兩個(gè)整型數(shù)相除的余取余運(yùn)算只能用于兩個(gè)整型數(shù)的運(yùn)算。功能是求兩個(gè)整型數(shù)相除的余數(shù)。用下面的公式:數(shù)。用下面的公式:余數(shù)余數(shù)=被除數(shù)被除數(shù)-商商 除數(shù)除數(shù)注意:注意:5%-3=2,而,而-5
25、%3=-2。確定確定商商的規(guī)則為:同號(hào)的規(guī)則為:同號(hào)數(shù)數(shù)相除商為正,異號(hào)數(shù)相除商為負(fù),部分積的相除商為正,異號(hào)數(shù)相除商為負(fù),部分積的絕對(duì)值不能大于被除數(shù)的絕對(duì)值。絕對(duì)值不能大于被除數(shù)的絕對(duì)值。【例例1.8】取余運(yùn)算。取余運(yùn)算。/*ex1_8.cpp*#include using namespace std;void main() int a,b; a=5%-3; b=-5%3; couta=atb=b(大于)=(大于等于) 0時(shí),表達(dá)式“x+yx”是永真的。但在用計(jì)算機(jī)語言判斷關(guān)系表達(dá)式“x+yx”的值時(shí),可能會(huì)得出不真的結(jié)論(即:當(dāng)y是一個(gè)足夠小以至計(jì)算機(jī)無法表達(dá)的正數(shù)時(shí), “x+yx”的值
26、為假)?!纠?.9】關(guān)系表達(dá)式的運(yùn)用。程序代碼如下:/*ex1_9.cpp*#define EPS 1.0E-16 / 此此EPS符號(hào)常量在內(nèi)存中實(shí)際上是符號(hào)常量在內(nèi)存中實(shí)際上是0#include using namespace std;void main() double x, y; bool z; x=5.0; y=EPS; z=x+yx; coutx=xty=ytz=zendl; coutsetprecision(16)x+y=(x+y)endl;程序的運(yùn)行結(jié)果如下程序的運(yùn)行結(jié)果如下:1.7.3 邏輯運(yùn)算符與邏輯表達(dá)式1邏輯運(yùn)算符在C+中,邏輯運(yùn)算符有以下幾種:!:邏輯求反(又稱邏輯非,
27、單目運(yùn)算符)&:邏輯與(雙目運(yùn)算符)|:邏輯或(雙目運(yùn)算符)邏輯運(yùn)算符的優(yōu)先級(jí)從高到低依次是: !、&、|。邏輯運(yùn)算符的結(jié)合性是從左至右(單目除外)。 2邏輯表達(dá)式邏輯表達(dá)式是由邏輯運(yùn)算符與操作數(shù)組成的式子。C+規(guī)定:邏輯表達(dá)式中非0的操作數(shù)為真,0操作數(shù)為假。這說明C+的邏輯運(yùn)算符的操作數(shù)可以是算術(shù)表達(dá)式、關(guān)系表達(dá)式、邏輯表達(dá)式。這與其他程序語言不同。邏輯運(yùn)算的結(jié)果為真時(shí)用1表示,為假時(shí)用0表示。書上p21一句“邏輯運(yùn)算結(jié)果的類型也是整型不太嚴(yán)謹(jǐn)。其實(shí),邏輯運(yùn)算結(jié)果的類型本來是邏輯型,但由于邏輯型最終要數(shù)值化為1或0,才變成整型的。【例1.10】邏輯表達(dá)式的運(yùn)用。程序代碼如下
28、:/*ex1_10.cpp*#include using namespace std;void main() int a, b, c, d; bool e; a=5; b=0; c=!b; d=a&b; e=a|b; coutatbtctdte:右移位運(yùn)算符:左移位運(yùn)算符都是雙目運(yùn)算符,優(yōu)先級(jí)相同,高于邏輯位運(yùn)算符優(yōu)先級(jí)。移位運(yùn)算符左邊是要移位的操作數(shù),右邊是要移位的位數(shù)。移位運(yùn)算表達(dá)式寫為:或:右移位操作是將操作數(shù)化成二進(jìn)制數(shù),將操作數(shù)右移指定位數(shù),移出的二進(jìn)制位丟棄,左邊補(bǔ)0或符號(hào)位(根據(jù)編譯系統(tǒng)決定)。左移位操作是將操作數(shù)化成二進(jìn)制數(shù),將操作數(shù)左移指定位數(shù),移出的二進(jìn)制位丟棄,右
29、邊補(bǔ)0?!纠?.11】邏輯位運(yùn)算和移位運(yùn)算。邏輯位運(yùn)算和移位運(yùn)算。程序代碼如下:程序代碼如下:/*ex1_11.cpp*#include using namespace std;void main() int a, b; a=13; b=8; couta=ata=aendl; couta&b=(a&b)endl; coutab=(ab)endl; couta|b=(a|b)endl; cout2=2)endl; couta2=(a2)endl; cout2=2)endl;程序的運(yùn)行結(jié)果 1.7.5 賦值運(yùn)算符與賦值表達(dá)式1賦值運(yùn)算符賦值運(yùn)算符有11種,均為雙目運(yùn)算符,優(yōu)先級(jí)僅
30、高于逗號(hào)運(yùn)算符,結(jié)合性是從右至左。11種賦值運(yùn)算符中有1個(gè)基本賦值運(yùn)算符,10個(gè)復(fù)合賦值運(yùn)算符,分別為:(1)=:基本賦值運(yùn)算符(2)+=:加賦值運(yùn)算符(3)-=:減賦值運(yùn)算符(4)*=:乘賦值運(yùn)算符(5)/=:除賦值運(yùn)算符(6)%=:取余賦值運(yùn)算符(7)&=:位與賦值運(yùn)算符(8)=:位異或賦值運(yùn)算符(9)|=:位或賦值運(yùn)算符(10)=:位右移賦值運(yùn)算符2賦值表達(dá)式賦值表達(dá)式是由賦值運(yùn)算符與操作數(shù)組成的式子。對(duì)應(yīng)11種賦值運(yùn)算符有相應(yīng)的11種賦值表達(dá)式。先介紹基本賦值表達(dá)式,書寫為:=上句在C+中稱賦值表達(dá)式。在C+中允許表達(dá)式構(gòu)成語句,只要在賦值表達(dá)式后面加上;,即:=;【例例1.1
31、2】賦值表達(dá)式的值及其副作用。賦值表達(dá)式的值及其副作用。程序代碼如下:程序代碼如下:/*ex1_12.cpp*#include using namespace std;void main() int c=1, a, b; coutc=cendl; a=b=c=10; couta=atb=btc=c ta=b=c=10=(a=b=c=10)endl; couta+=2=(a+=2)endl; a+=a; couta=aendl;程序的運(yùn)行結(jié)果如下程序的運(yùn)行結(jié)果如下:其他復(fù)合賦值運(yùn)算符組成復(fù)合賦值表達(dá)式的形式類似基本賦值表達(dá)式,表達(dá)形式如下: += 等價(jià)于等價(jià)于 =+-= 等價(jià)于等價(jià)于 =-*=
32、等價(jià)于等價(jià)于 =*/= 等價(jià)于等價(jià)于 =/%= 等價(jià)于等價(jià)于 =%&= 等價(jià)于等價(jià)于 =&= 等價(jià)于等價(jià)于 =|= 等價(jià)于等價(jià)于 =|=等價(jià)于等價(jià)于 =等價(jià)于等價(jià)于 =復(fù)合賦值表達(dá)式比基本賦值表達(dá)式書寫簡(jiǎn)單、編譯時(shí)生成的目標(biāo)代碼少,因而運(yùn)行效率高。 可以使用賦值表達(dá)式連續(xù)賦值。例如:int a,b,c;a=b=c=1;表達(dá)式a=b=c=1使3個(gè)變量均擁有值1。由于賦值運(yùn)算符的結(jié)合性是從右至左,所以變量c和表達(dá)式c=1先擁有值1,然后變量b和表達(dá)式b=c=1擁有值1,最后才是變量a和表達(dá)式a=b=c=1擁有值1。區(qū)分:賦值表達(dá)式的左值、右值、表達(dá)式的值、變量的值(雖然數(shù)量上相等,
33、但概念要分清)。1.7.6 三目運(yùn)算符與三目條件表達(dá)式在C+中只有一個(gè)三目運(yùn)算符?:,三目條件表達(dá)式格式如下:?:先計(jì)算,當(dāng)非0時(shí),三目條件表達(dá)式取的值,否則取的值。三目條件表達(dá)式的功能可以解釋成一個(gè)簡(jiǎn)單的條件語句(參見第2章)。三目運(yùn)算符 ?: 的結(jié)合性是從右至左從右至左?!纠?.13】三目條件表達(dá)式的運(yùn)用。三目條件表達(dá)式的運(yùn)用。程序代碼如下:程序代碼如下:/*ex1_13.cpp*#include using namespace std;void main() int a=1,b=2,c=3; coutab?a:b = (ab?a:b)endl; coutb?b-:+a = b?b-:+
34、a)endl; coutb?+a:+b = b?+a:+b)endl; coutb?a:bc?b:c = b?a:bc?b:c)endl;程序的運(yùn)行結(jié)果如下: ab?b-:+a = 2 c+=ab?+a:+b = 6 ab?a:bc?b:c = 6 1.7.7 逗號(hào)運(yùn)算符與逗號(hào)表達(dá)式逗號(hào)在C+中可以作為分隔符或運(yùn)算符。逗號(hào)運(yùn)算符為雙目運(yùn)算符,它的優(yōu)先級(jí)最低,結(jié)合性是從左至右。逗號(hào)運(yùn)算符用來連接兩個(gè)或兩個(gè)以上的表達(dá)式,形成逗號(hào)表達(dá)式。計(jì)算逗號(hào)表達(dá)式時(shí),從左至右依次計(jì)算各個(gè)表達(dá)式,逗號(hào)表達(dá)式的值取最后一個(gè)表達(dá)式的值逗號(hào)表達(dá)式的值取最后一個(gè)表達(dá)式的值。注意例1.14中倒數(shù)第二行的輸出結(jié)果。 【例例1
35、.14】逗號(hào)表達(dá)式的運(yùn)用。逗號(hào)表達(dá)式的運(yùn)用。程序代碼如下:程序代碼如下:/*ex1_14.cpp*#include using namespace std;void main() int a=1, b=2, c=3; couta=atb=btc=cendl; c=(a=10, b=a*2, b*2); couta=atb=btc=cendl; couta,b,c,c*3= (a,b,c,c*3):用于結(jié)構(gòu)體、共用體變量。(4)sizeof:計(jì)算一數(shù)據(jù)類型或一表達(dá)式占用內(nèi)存的字節(jié)數(shù)。例如:sizeof(int)、sizeof(x) 、sizeof(x+y),等等。,等等。(5)強(qiáng)制類型強(qiáng)制類型:
36、作用于一表達(dá)式,使表達(dá)式的類型強(qiáng)制性轉(zhuǎn)換為指定類型。例如:(int)(a+b+1.234567);表達(dá)式值被表達(dá)式值被強(qiáng)制性轉(zhuǎn)換為int類型C+的優(yōu)先級(jí)和結(jié)合性比較復(fù)雜,通過下面的總結(jié),可以記?。撼罡呒?jí)和最低級(jí)外,其他運(yùn)算符的優(yōu)先級(jí)是“一二三賦值”。最高級(jí)是圓括號(hào)、下標(biāo)、點(diǎn)、箭頭;最低級(jí)是逗號(hào)?!耙欢x一二三賦值值”分別指單目、雙目、三目、賦值運(yùn)算符,它們的優(yōu)先級(jí)也是按此順序。這樣分出了6大類優(yōu)先級(jí)。在雙目運(yùn)算符中,有10級(jí),順序是:算術(shù)(除求負(fù)值運(yùn)算外分2級(jí))、移位、關(guān)系(分2級(jí))、邏輯位(除按位取反運(yùn)算外分3級(jí))、邏輯(除邏輯非運(yùn)算外分2級(jí))。單目、三目、賦值運(yùn)算符的結(jié)合性是從右至左,其他運(yùn)算符的結(jié)合性是從左至右。 【例例1.15】運(yùn)算符的優(yōu)先級(jí)和結(jié)合性。運(yùn)算符的優(yōu)先級(jí)和結(jié)合性。程序代碼如下:程序代碼如下:/*ex1_15.cpp*#include using namespace std;void main() int x,y,z; x=!-5+312; y=x-(-1); c
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度醫(yī)療機(jī)構(gòu)耗材供應(yīng)鏈優(yōu)化及采購合同
- 2025年度商業(yè)廚房環(huán)境監(jiān)測(cè)與改善承包合同4篇
- 2025年度環(huán)境風(fēng)險(xiǎn)評(píng)估與應(yīng)急預(yù)案編制合同-@-8
- 2025年度國際網(wǎng)絡(luò)安全防護(hù)合同范本
- 2025年度城市街道冬季清雪服務(wù)承包合同范本4篇
- 2025年度國際會(huì)議中心場(chǎng)地使用合同樣本
- 二零二四年度休閑農(nóng)業(yè)土地租賃經(jīng)營合同3篇
- 2025年度人力資源顧問合同范本二零二五年度專用
- 2025年度瓷石新材料研發(fā)與應(yīng)用合作合同3篇
- 二零二四年度綜合保稅區(qū)委托招商服務(wù)合同3篇
- 《環(huán)境管理學(xué)》教案
- 2025年蛇年年度營銷日歷營銷建議【2025營銷日歷】
- (一模)寧波市2024學(xué)年第一學(xué)期高考模擬考試 數(shù)學(xué)試卷(含答案)
- 父母贈(zèng)與子女農(nóng)村土地協(xié)議書范本
- 集團(tuán)母子公司協(xié)議書
- 中醫(yī)病證診斷療效標(biāo)準(zhǔn)
- 南安市第三次全國文物普查不可移動(dòng)文物-各鄉(xiāng)鎮(zhèn)、街道分布情況登記清單(表五)
- ITSMS-D-038 問題記錄表范本
- 第1課+古代亞非(教學(xué)設(shè)計(jì))【中職專用】《世界歷史》(高教版2023基礎(chǔ)模塊)
- 物業(yè)客服管家的培訓(xùn)課件
- 2024年房地產(chǎn)行業(yè)的樓市調(diào)控政策解讀培訓(xùn)
評(píng)論
0/150
提交評(píng)論