![C 程序設(shè)計課件:第一章C基礎(chǔ)知識_第1頁](http://file4.renrendoc.com/view/eb035104108f38bee8d664987cfd98c3/eb035104108f38bee8d664987cfd98c31.gif)
![C 程序設(shè)計課件:第一章C基礎(chǔ)知識_第2頁](http://file4.renrendoc.com/view/eb035104108f38bee8d664987cfd98c3/eb035104108f38bee8d664987cfd98c32.gif)
![C 程序設(shè)計課件:第一章C基礎(chǔ)知識_第3頁](http://file4.renrendoc.com/view/eb035104108f38bee8d664987cfd98c3/eb035104108f38bee8d664987cfd98c33.gif)
![C 程序設(shè)計課件:第一章C基礎(chǔ)知識_第4頁](http://file4.renrendoc.com/view/eb035104108f38bee8d664987cfd98c3/eb035104108f38bee8d664987cfd98c34.gif)
![C 程序設(shè)計課件:第一章C基礎(chǔ)知識_第5頁](http://file4.renrendoc.com/view/eb035104108f38bee8d664987cfd98c3/eb035104108f38bee8d664987cfd98c35.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 C+ 程序設(shè)計計算機語言的基本體系結(jié)構(gòu)語言的基本體系結(jié)構(gòu)程序設(shè)計語言本章將簡要介紹C+中的數(shù)據(jù)類型及相關(guān)運算,以及常量、變量、表達式、語句等,最后介紹簡單的輸入輸出方法。第一章 C+基礎(chǔ)知識第一章 C+基礎(chǔ)知識1.3 C+的詞法單位1.6 運算符和表達式1.8 簡單的輸入輸出1.7 數(shù)組與字符數(shù)組1.5 常量和變量1.4 C+ 中的數(shù)據(jù)類型ok1.1 C+語言概述 1.2 一個C+程序?qū)嵗?.1 C語言概述 歷史:C+是由C語言為基礎(chǔ)發(fā)展起來的。C語言是作為UNIX操作系統(tǒng)的開發(fā)語言為人們所認識。七十年代末,C語言開始移植到非UNIX環(huán)境中,并逐步脫離UNIX系統(tǒng)成為一種獨立的程序設(shè)計語言。
2、1988年美國國家標(biāo)準協(xié)會ANSI對C語言進行了標(biāo)準化,產(chǎn)生了ANSI C。1.1 C 語言概述 (1)C語言既具備高級語言的結(jié)構(gòu)和編程環(huán)境,又提供類似于匯編語言那樣的系統(tǒng)資源操縱能力及程序執(zhí)行效率。適合解決有實時要求的問題。C語言的主要特點:(2)有豐富的運算符和數(shù)據(jù)類型,表達式類型多樣化,可以方便地實現(xiàn)在其他語言中較難實現(xiàn)的運算,對各種不同類型的程序設(shè)計都有良好的適應(yīng)性。(3)以函數(shù)為基礎(chǔ)實現(xiàn)程序的結(jié)構(gòu)化設(shè)計,支持大型程序的多文件構(gòu)成及單個文件獨立編譯,適合大型復(fù)雜程序的設(shè)計。(4)語言簡潔、緊湊,使用方便、靈活。(5)可移植性好。1.1 C 語言概述 C+是由C發(fā)展成為的以面向?qū)ο鬄橹饕?/p>
3、特征的語言。作為C語言的超集,C+繼承了C的所有優(yōu)點,又對數(shù)據(jù)類型做了擴充,使得編譯系統(tǒng)可以檢查出更多類型錯誤。C+支持面向?qū)ο蟪绦蛟O(shè)計,通過類和對象的概念把數(shù)據(jù)和對數(shù)據(jù)的操作封裝在一起,通過派生、繼承、重載和多態(tài)性等特征實現(xiàn)了軟件重用和程序自動生成,使得大型復(fù)雜軟件的構(gòu)造和維護變得更加有效和容易。C+語言的主要特點:1.1 C 語言概述 C+與C完全兼容,很多用C編寫的庫函數(shù)和應(yīng)用程序都可以為C+所用。但正是由于與C兼容,使得C+不是純正的面向?qū)ο蟮恼Z言,它既支持面向?qū)ο蟪绦蛟O(shè)計,也支持面向過程設(shè)計。但我們應(yīng)當(dāng)注意用面向?qū)ο蟮乃枷脒M行設(shè)計,以發(fā)揮出C+的優(yōu)勢。C+語言的兼容性:1.2 一個C
4、+程序?qū)嵗? include using namespace std;int max(int i, int j) /A if (i=j) return i; else return j; int main(void) /B coutij; /從鍵盤上輸入變量值 coutmax number is:max(i, j) n ; /輸出提示和結(jié)果 return 0;【例1.1】 一個簡單的C+程序。程序組成:注釋編譯預(yù)處理指令程序體由若干函數(shù)組成,其中有且僅有一個主函數(shù)main(),這是程序的執(zhí)行入口。在Windows編程中定義為winmain()。下面進入VC+ 運行1.3 C+的詞法單位1.3.
5、1 C+的字符集 1.3.2 關(guān)鍵字 1.3.3 標(biāo)識符(ID,identifier) 1.3.4 標(biāo)點符號 ok1.3.1 C+的字符集ASCII碼字符集是計算機中的常用字符集。它包括英文字母及阿拉伯?dāng)?shù)字等128個字符,存儲一個ASCII碼占用一個字節(jié)單元。漢字國標(biāo)碼用于漢字處理。國標(biāo)碼的存儲占用兩個字節(jié)單元。Unicode字符集對各類字符進行統(tǒng)一的雙字節(jié)編碼。它包括了世界上多種語言的基本字符,最多可容納65536個字符。 ASCII碼字符集,國標(biāo)碼字符集都是它的子集。ok常用字符集:C+的字符集26個小寫字母 abcdefghijklmnopqrstuvwxyz 26個大寫字母 ABCDE
6、FGHIJKLMNOPQRSTUVWXYZ 10個阿拉伯?dāng)?shù)字 0 1 2 3 4 5 6 7 8 9 其他符號 + - * / = , . _ : ; ? | ! # % & () 空格 C+語言基本字符:1.3.2 關(guān) 鍵 字關(guān)鍵字(keyword):又稱保留字。是由系統(tǒng)定義的具有特定含義的英文單詞。關(guān)鍵字不能另作它用。C+區(qū)分大小寫,關(guān)鍵字全部由小寫字母組成。標(biāo)準C+(ISO14882)定義了74個關(guān)鍵字,具體的C+編譯器會做一些增刪。常用關(guān)鍵字及分類見表1.1。ok 關(guān) 鍵 字數(shù)據(jù)類型說明符與修飾符bool char wchar_t class const double enum flo
7、at int long short signed struct union unsigned void volatile存儲類型說明符auto extern inline register static訪問說明符friend private protected public其它說明符asm explicit namespace operator template this typedef typename using virtual 語句與標(biāo)號break case catch continue default do else for goto if return switch throw tr
8、y while 運算符及邏輯值delete false new sizeof true表1.1 C+常用關(guān)鍵字及分類 ok 關(guān) 鍵 字 還有一些關(guān)鍵字本書未介紹: const_cast dynamic_cast reinterpret_cast static_cast export mutable typeid 下面可用一些關(guān)鍵字代替邏輯運算符:and and_eq bitand bitorcompl not or or_eqxor xor_eq not_eq1.3.3 標(biāo)識符標(biāo)識符(Identifier,ID ):是程序員定義的“單詞”,用來給變量、常量、數(shù)據(jù)類型、函數(shù)等命名。合法標(biāo)識符由字
9、母或下劃線開始,由字母、數(shù)字、下劃線組成,其有效長度為131個字符,長度超過31個字符者只識別前31個字符,VC+標(biāo)識符長度為1247個字符。建議使用有一定含義的英文單詞或拼音序列作標(biāo)識符,以提高可讀性;另外系統(tǒng)定義的內(nèi)部符號以下劃線或雙下劃線開始,所以自定義標(biāo)識符盡量不要以下劃線開始。ok標(biāo)識符例: 判斷下面哪些是合法的標(biāo)識符: MyFileSalary 94amountvoid94SalarySalary94$amountf3.5Num_of_Student1.3.4 標(biāo)點符號標(biāo)點符號:# ( ) , : ; 等。 標(biāo)點符號的作用:有一定的語法意義。如字符和字符串常量分別用 和 引起來。對
10、語法符號起分隔作用。如 ;等1.4 C+中的數(shù)據(jù)類型圖2-1 C+的數(shù)據(jù)結(jié)構(gòu)實 型 float雙精度型 doubleC+的數(shù)據(jù)類型基本數(shù)據(jù)類型非基本數(shù)據(jù)類型數(shù)組 type 指針 type *結(jié)構(gòu) struct聯(lián)合 union枚舉 enum類 class整 型 int字符型 char邏輯型 bool無值型 void實 型ok C+基本數(shù)據(jù)類型稱為內(nèi)置數(shù)據(jù)類型,內(nèi)置數(shù)據(jù)類型不僅定義了數(shù)據(jù)類型,還定義了常用操作。本節(jié)僅介紹各種基本數(shù)據(jù)類型的定義,常用操作將在后面介紹。 C+為強類型語言,所有數(shù)據(jù)的使用嚴格遵從“先說明后使用”的原則,以便編譯器進行編譯。 整型:用來存放整數(shù),整數(shù)(有符號的整數(shù))在內(nèi)存
11、中存放的是它的補碼,無符號數(shù)沒有符號位,存放的就是原碼。整數(shù)占用的字節(jié)數(shù)與機型有關(guān),32位機上占用4個字節(jié)。 內(nèi)置數(shù)據(jù)類型: 字符型:用來保存字符,存儲的是該字符的ASCII碼,占用一個字節(jié)。如大寫字母A的ASCII碼為65,在對應(yīng)的一個字節(jié)中存放的就是65。字符型數(shù)據(jù)從本質(zhì)上說也是整數(shù),可以是任何一個8位二進制整數(shù)。C+同時也支持寬字符類型(wchar_t),或稱雙字節(jié)字符型。 實型:單精度和雙精度型都用來存放實數(shù),兩者表示的實數(shù)精度不同。實數(shù)在內(nèi)存中以規(guī)范化的浮點數(shù)存放,包括尾數(shù)、數(shù)符和階碼。數(shù)的精度取決于尾數(shù)的位數(shù),32位機上實型為23位(因規(guī)范化數(shù)的數(shù)碼最高位恒為1,不必存儲,實際精度
12、為24位),雙精度為52位。 邏輯型:也稱布爾型,其取值為true(邏輯真)和false(邏輯假),存儲字節(jié)數(shù)在不同編譯系統(tǒng)中可能有所不同,VC+6.0中為1個字節(jié)。布爾型在運算中可以和整型相互轉(zhuǎn)化,false對應(yīng)為0,true對應(yīng)為1或非0無值型:主要用來說明函數(shù)的返回值類型,將在函數(shù)一章中具體介紹。 基本數(shù)據(jù)類型還可以加上一些修飾詞,包括:signed(有符號)、unsigned(無符號)、long(長)、short(短)。參見下表:類 型名 稱占用字節(jié)數(shù)取 值 范 圍bool布爾型1true, false(signed) char有符號字符型1-128 127unsiged char無符
13、號字符型10 255(signed) short (int)有符號短整型2-32768 32767unsigned short (int)無符號短整型20 65535(signed) int (signed)有符號整型4-231 (231-1)unsigned (int)無符號整型40 (232-1)(signed) long (int)有符號長整型4-231 (231-1)unsigned long (int)無符號長整型40 (232-1)float實型4-1038 1038double雙精度型8-10308 10308long double長雙精度型8-10308 10308void無值
14、型0無值VC+中所有基本數(shù)據(jù)類型1.5 變量和常量1.5.1 變 量1.5.2 文字常量1.5.3 常變量在程序中,常量和變量是用來表示數(shù)據(jù)的;常量又分為字面常量、常變量;ok1.5.1 變 量1 變量說明 2 變量初始化變量,在程序中是指可以改變值的量;變量必須用標(biāo)識符進行標(biāo)識,稱為變量名;變量有類型之分,如整形變量、字符變量等;類型決定了變量的取值范圍和合法運算;任何變量都必須先說明后使用;一是便于編譯程序為變量分配空間,二是便于編譯時進行語法檢查;變量使用的第一步,是給變量賦一個確定的值;ok變量說明 在C+中,變量說明的一般格式為:存儲類型數(shù)據(jù)類型 變量名1,變量名2, ,變量名n;
15、例:int i, j, k; /說明三個整型變量i, j, kfloat x, y, z; /說明三個單精度實型變量x, y, zchar c1, c2; /說明兩個字符型變量c1, c2double dx; /說明一個雙精度型變量dx 變量初始化變量初始化:定義變量時即給變量一個值稱為變量初始化例如:int a=3, b=4, c=5;float x=3.0;變量初始化可以避免引用到隨機變量。如未初始化,變量使用的第一步是賦一個確定的值。1.5.2 文字常量1. 整型常量 4. 字符串常量3. 字符型常量2. 實型常量文字常量:指程序中直接給出的量;常量的值在程序執(zhí)行過程中保持不變;并且存儲
16、在程序區(qū),而非數(shù)據(jù)區(qū);根據(jù)取值和表示方法的不同,可分為以下幾種:ok整型常量十進制表示法八進制表示法十六進制表示法其他表示法整型常量表示方法:ok 整數(shù)的十進制表示方法 C+中十進制表示與平時熟悉的書寫方式相同。例:15 -24ok 整數(shù)的八進制表示 C+中八進制表示以0開始,由數(shù)字07組成,用來表示一個八進制數(shù)。例:012 /八進制數(shù)12,即十進制數(shù)10-0655/八進制數(shù)-655,即十進制數(shù)-429ok 整數(shù)的十六進制表示 C+中十六進制以0X(大小寫均可)開始,由數(shù)字09和字母AF(大小寫均可)組成,用來表示一個十六進制數(shù)。例:0 x32A /十六進制數(shù)32A,即十進制數(shù)810-0 x2
17、fe0 /十六進制數(shù)-2fe0, /即十進制數(shù)-12256ok整數(shù)的其他表示方法長整型常量和無符號整型常量:長整型常數(shù)以 L 或 l 結(jié)尾,無符號常整數(shù)以 U 或 u 結(jié)尾,以 U L 或 L U(大小寫均可)結(jié)尾則可表示無符號長整型常數(shù)。例如:-84L/十進制長整數(shù)-84026U/八進制表示的無符號整數(shù)260X32LU /十六進制表示的無符號長整型數(shù)32。實型常量(1)一般形式與平時書寫形式相同,由數(shù)字 0 9和小數(shù)點組成。例如:0.23 -125.76 0.0 .46 -35.(2) 指數(shù)形式(也稱為科學(xué)表示法)表示為尾數(shù)乘以10的次方形式,由尾數(shù)、E或e和階數(shù)組成。指數(shù)形式要求在E或e前
18、面的尾數(shù)部分必須有數(shù)字,后面的指數(shù)部分必須為整數(shù)。 例 : 判斷下列表示是否合法123E12 -.34e-2 E4 1.43E3.5 包含小數(shù)點和10的冪的數(shù)為實型常量表示方法:字符型常量 字符常量:用單引號引起來的單個字符。在內(nèi)存中保存的是字符的ASCII碼值。在所有字符中,可顯示字符通常就用單引號引起來表示: a /字符a /字符4/字符4 /空格字符特殊情況字符,如不可顯示的字符等,c+使用轉(zhuǎn)義序列表示方法(詳見表1-3,此處略):n /換行 /字符 4. 字符串常量字符串常量與字符型常量的區(qū)別:字符串常量 a占兩個字節(jié),存放a和0,值為0 x6100字符型常量a占一個字節(jié),存放a,值為
19、0 x61字符串常量:用雙引號引起來的若干個字符。例如: I am a Chinese., 123, a , 1.5.3 常變量標(biāo)識符常量:用常量說明符const給文字常量起的名字(標(biāo)識符),因為其說明和引用形式很像變量,所以也稱常變量;例如:const float PI=3.14159;/推薦用大寫字母作為常變量名const int Number_of_Student=100;常變量必須也只能在說明時進行初始化;常變量初始化之后,不允許再被賦值;常變量必須先說明后使用;常變量存儲在數(shù)據(jù)區(qū),并且可以按地址訪問,編譯時系統(tǒng)對常變量進行類型檢查。C+建議使用常變量,而不要使用文字常量。1.6 運算
20、符和表達式1.6.1 運算符、優(yōu)先級和結(jié)合性 1.6.2 基本運算符及其表達式 1.6.4 算術(shù)類型轉(zhuǎn)換和賦值類型轉(zhuǎn)換 (選讀)1.6.5 求值次序與副作用 1.6.3 語句 本節(jié)的重點:介紹與基本數(shù)據(jù)類型封裝在一起的運算(操作)。ok1.6.1 運算符、優(yōu)先級和結(jié)合性ok 在C+中對常量或變量進行運算或處理的符號稱為運算符,參與運算的對象稱為操作數(shù)。運算符按操作數(shù)的數(shù)量分類: 單目運算符只對一個操作數(shù)運算,如負號運算符“”等; 雙目運算符要求有兩個操作數(shù),如乘號運算符“*”等; 三目運算符要求有三個操作數(shù),三元運算符只有一個“?:”。1.6.1 運算符、優(yōu)先級和結(jié)合性ok 優(yōu)先級和結(jié)合性決定
21、了運算中的優(yōu)先關(guān)系。優(yōu)先級:指不同運算符在運算中的優(yōu)先關(guān)系,可以用序號表示,序號越小,優(yōu)先級越高。例如: 加號()和減號()的優(yōu)先級是6;乘號( * )和除號( / )的優(yōu)先級是5;* 和 / 的優(yōu)先級高于和。 1.6.1 運算符、優(yōu)先級和結(jié)合性結(jié)合性:決定優(yōu)先級相等的運算符組合在一起時的運算次序,同一優(yōu)先級的運算符有相同的結(jié)合性。 如+、-的結(jié)合性是從左到右(左結(jié)合),則a+b+c-d的運算次序為:(a+b)+c)-d /先算a+b,再加c,最后減d 又如前+和單目負-的結(jié)合性是從右到左(右結(jié)合),則-+a的運算次序為:-(+a) /先做+a,再取相反數(shù)(加負號)這對算法描述是必須的,每一步
22、做什么必須確定。1.6.1 運算符、優(yōu)先級和結(jié)合性例:(1) a*b+c; /先做乘法運算,再做加法(2) a+b-c ;/根據(jù)左結(jié)合性,先取a、b相加;/再取c,最后相減演示如下:設(shè)a=10,b=20,c=15;10201510203015-151 算術(shù)運算符及其表達式4 邏輯運算、邏輯表達式及其求值優(yōu)化 5 位運算(選讀) 2 賦值運算符賦值表達式3 自增、自減運算 6 逗號運算符與逗號表達式 1.6.2 基本運算符及其表達式7 sizeof( )運算符 表達式:由運算符、操作數(shù)及標(biāo)點符號組成的,能取得一個值的式子。1.算術(shù)運算符及其表達式優(yōu)先級運算符名 稱3+正,單目-負,單目5*乘,雙
23、目/除,雙目%求余,雙目6+加,雙目-減,雙目ok整數(shù)的算術(shù)運算:當(dāng)兩個操作數(shù)均為整數(shù)時,*和/重載為整乘和整除,結(jié)果為整數(shù),除法運算后舍去小數(shù)取整。如:5/4/結(jié)果為1,整數(shù)當(dāng)兩個操作數(shù)均為整數(shù),%定義為求余運算,也稱求模運算,結(jié)果為兩個整數(shù)相除后的余數(shù)。如果兩個整數(shù)中有負數(shù),則先用兩數(shù)絕對值求余,最后結(jié)果的符號與被除數(shù)相同。例如6%3/結(jié)果為06%7/結(jié)果為67%6/結(jié)果為1-7%6/結(jié)果為-17%-6/結(jié)果為1-7%-6/結(jié)果為-1實數(shù)的算術(shù)運算: 只要有一個操作數(shù)是實數(shù),兩個操作數(shù)均轉(zhuǎn)換為double型,*和/重載為普通的乘和除,結(jié)果是實數(shù):5/4.0/結(jié)果為1.25,實數(shù)運算符的重載
24、:運算符總是與操作數(shù)封裝在一起。相同的運算符對不同類型的操作數(shù)執(zhí)行的運算是有差異的。算術(shù)表達式:使用時注意:1、表達式中每個變量都有確定的值時才能進行表達式求值;2、C+中算術(shù)運算應(yīng)注意數(shù)據(jù)溢出問題,即運算結(jié)果超出對應(yīng)數(shù)據(jù)類型的表示范圍。編譯程序只會對除法運算時除數(shù)為0這種情況提示出錯,因此,程序設(shè)計者必須在程序中解決檢查并處理數(shù)據(jù)溢出問題。ok由算術(shù)運算符連接的表達式,如:a+b*3 ;2.賦值運算符與賦值表達式 ok賦值與引用: 將數(shù)據(jù)存放到相應(yīng)存儲單元中稱為賦值,如果該單元中已有值,賦值操作以新值取代舊值;從某個存儲單元中取出數(shù)據(jù)使用,稱為引用,引用不影響單元中的值,即一個量可以多次引用
25、。常量只能引用,不能賦值。 賦值通過賦值運算符“=”來完成,其意義是將賦值號右邊的值送到左邊變量所對應(yīng)的單元中。賦值號不是等號,它具有方向性。 左值與右值:C+將變量名代表的單元稱為 “左值”,而將變量的值稱為“右值”。 左值必須是內(nèi)存中一個可以訪問且可以合法修改的對象,因此只能是變量名,而不能是常量或表達式。2.賦值運算符與賦值表達式 例如下面的賦值運算是錯誤的:3.1415926=pi;/左值不能是常數(shù)x+y=z;/左值不能是表達式const int N=30;N=40;/左值不能是常變量2.賦值運算符與賦值表達式賦值表達式:由賦值運算符連接的表達式。格式為: 變量 = 表達式 例如:x=
26、5+6;a=b=c=d+1; 復(fù)合賦值運算符:雙目算術(shù)運算符和賦值運算符可以組合成單一運算符:+ = = * = / = % = 格式為: 變量 復(fù)合賦值運算符 表達式 它等同于 變量 = 變量 運算符 表達式 例如:x+=5 等同于:x=x+5ok3.自增自減運算前置和后置運算:前置是先增減后引用,即先對變量自加或自減,用新的值參與其他運算;后置則是先引用后增減,即用變量原來的值參與其他運算,然后再對變量進行自加或自減,例如:int i=5, j=5, m, n;m=i+; /后置;相當(dāng)于m=i; i=i+1; /結(jié)果:i的值為6,m的值為5;n=+j; /前置;相當(dāng)于j=j+1;n=j;
27、/結(jié)果:j的值為6,n的值為6;自增自減運算符:意義:使變量當(dāng)前值加1或減1,再賦給該變量自己:i+或+i /相當(dāng)于i=i+1 j-或-j /相當(dāng)于j=j1要求:操作數(shù)只能是變量,不能是常量或表達式;ok4.邏輯運算、邏輯表達式及其求值優(yōu)化 ok邏輯運算:用于判斷分析,運算符包括關(guān)系和邏輯運算符。關(guān)系運算符:包括:(大于)、(大于等于)、(小于)、(小于等于)(優(yōu)先級8);= =(等于)和!=(不等于) (優(yōu)先級9) 。關(guān)系運算符完成兩個操作數(shù)大小的比較,結(jié)果為邏輯值true(真)或false(假)。每種可比較大小的數(shù)據(jù)類型,都重載了關(guān)系運算符。類型相容(參見后文)的不同類型,自動轉(zhuǎn)換為同一類
28、型后進行比較。在C+中這兩個邏輯值與整數(shù)之間有一個對應(yīng)關(guān)系,真對應(yīng)1,假對應(yīng)0;反過來,0對應(yīng)假,非0整數(shù)對應(yīng)真。所以邏輯運算結(jié)果可以作為整數(shù)參與算術(shù)運算、關(guān)系運算、邏輯運算及其他運算。關(guān)系表達式:例如:a+bc+d /*等同于(a+b)(c+d),結(jié)果為0或1*/y=ab /*計算ab的值0或1賦給y,y的值為0或1*/abc /*等同于(ab)c,先求ab 的值, 再將結(jié)果0或1與c比較大小*/由關(guān)系運算符連接的表達式。是一種簡單的邏輯表達式。值為true或false。ok注意:數(shù)學(xué)式abc,應(yīng)表達為ab&bc,參見后文的內(nèi)容。設(shè)有定義 float a=3.2;int b=5;則: 3ab
29、/結(jié)果是?根據(jù)右結(jié)合原則其運算過程如下:a5b3.23F, 即0F即0優(yōu)先級運算符名 稱語 義3!邏輯非, 單目操作數(shù)的值為真,則結(jié)果為假;反之結(jié)果為真12&邏輯與,雙目當(dāng)兩個操作數(shù)全為真時,結(jié)果為真,否則為假;13|邏輯或,雙目兩個操作數(shù)中有一個為真,則結(jié)果為真;邏輯運算符:包括:!、&和|,其優(yōu)先級和語義見下表。由邏輯運算符連接的表達式,其操作數(shù)和運算結(jié)果均為邏輯量。操作數(shù)可以是表達式,只要其值是邏輯量,如關(guān)系表達式。 由于邏輯值和整數(shù)之間的對應(yīng)關(guān)系,也允許整型和字符型操作數(shù)進行邏輯運算:21&0/邏輯與,21與0,結(jié)果為假:021|0/邏輯或,21或0,結(jié)果為真:1!21/邏輯非,21的
30、非,結(jié)果為假:0運算結(jié)果同樣可以作為一個整數(shù)參與其他運算。 邏輯表達式:邏輯表達式計算時,邏輯非優(yōu)先級最高,關(guān)系運算其次,邏輯與和邏輯或最低。 ok已知: int a=10, b=20, c=30;float x=1.8, y=2.4; ay|ab-!c按優(yōu)先級與結(jié)合性,其求值順序等同于:(ay)|(a(b-(!c)t1=1 t2=0t4=0 -&t3=0t5=bt6=1| 得整個表達式的值為:1邏輯表達式求值的優(yōu)化:在求邏輯表達式值的過程中,一旦表達式的值能夠確定,就不再逐步進行下面的運算。稱為“求值優(yōu)化”。已知: int a=10, b=20, c=30;求: ab | c+ /結(jié)果以及a
31、,b,c的值t1=1整個表達式的值為 1可見: 表達式 c+ 已不需要計算所以: c不變?nèi)詾?30編程人員在使用邏輯運算時應(yīng)當(dāng)加以小心,優(yōu)化計算固然提高了運算效率,但可能產(chǎn)生副作用。所謂副作用,就是出乎設(shè)計人員的意料,得到預(yù)想不到的結(jié)果。5. 位運算(選讀)(1)按位取反運算符“” (2)左移運算符“” (4)按位與運算符“&” (5)按位或運算符“|” (6)按位異或運算符“” okc+語言提供字位運算,它對操作數(shù)的各個位進行操作。(1)按位取反運算符“”將操作數(shù)的每個二進制位取反,即1變?yōu)?,0變?yōu)?。例如,整數(shù)a的值為10011011,則a的值為01100100。(2)左移運算符“”運算
32、一般格式為:a”與左移運算符類同,將左操作數(shù)向右移動右操作數(shù)指定的二進制位數(shù),忽略移位后的小數(shù)部分,并在高位補0。一個整數(shù)右移n位相當(dāng)于除以2的n次方,但比除法快。 在VC+6.0中有符號數(shù)右移時高位補符號位,嚴格對應(yīng)除法:-323 /-32右移3位,由11100000B得11111100B,即-4(4)按位與運算符“&”將兩個操作數(shù)的對應(yīng)位逐一進行按位邏輯與運算。運算規(guī)則為:對應(yīng)位均為1時,該位運算結(jié)果為1;否則為0。例如:a 01001101b 00001111a & b 00001101該運算可用來將整數(shù)的某些位置0,而保留所需要的位,上例保留了低四位。(5)按位或運算符“|”將兩個操作
33、數(shù)的對應(yīng)位逐一進行按位邏輯或運算。運算規(guī)則為:只要有一個數(shù)對應(yīng)位為1,該位運算結(jié)果即為1;兩個數(shù)對應(yīng)位均為0,該位結(jié)果為0。例如:a 01001101b 00001111a | b 01001111該運算符可用來將整數(shù)的某些位置1。上例高四位不變,低四位全1。(6)按位異或運算符“”將兩個操作數(shù)的對應(yīng)位逐一進行按位異或運算。運算規(guī)則為:當(dāng)對應(yīng)位的值不同時,該位運算結(jié)果為1,否則為0。例如:a 01001101b 00001111a b 01000010該運算符可用來將一個整數(shù)的某些位取反,或?qū)⒄妥兞康闹抵?(將整型變量與自身按位異或)。上例低四位取反,高四位不變。雙目位運算符也可以與賦值運算
34、符組合成復(fù)合賦值運算符:= &= | = =以上6種單目運算不影響數(shù)據(jù)本身的值,而是只產(chǎn)生一個中間量,這個中間量被引用后即不再存在。 6.逗號運算符與逗號表達式用逗號連接起來的表達式稱為逗號表達式, (C+中,逗號既是分隔符,又是運算符。)格式為:表達式1,表達式2,表達式n 逗號表達式中的每一個表達式都會被運算,整個逗號表達式的值為最后一個表達式的值。例如:a=(x=3,x+=6,5+6);/a=11 x=97. sizeof( ) 運算符 用于計算一個操作數(shù)類型或一個變量的字節(jié)數(shù)。一般格式為:sizeof (數(shù)據(jù)類型)或 sizeof(變量名) 例如:sizeof(int) 值為4 siz
35、eof( float) 值為4double x; sizeof( x) 值為8 1.6.3 語句1 表達式語句:表達式; 2 空語句: ; 3 復(fù)合語句: /若干語句 流程控制語句:流程控制語句用來控制或 改變程序的執(zhí)行方向 ; 1.6.3結(jié)束1.6.4 算術(shù)類型轉(zhuǎn)換和賦值類型轉(zhuǎn)換(選讀)1 混合運算的類型轉(zhuǎn)換規(guī)則 2 賦 值 類 型 轉(zhuǎn) 換 ok運算過程中,當(dāng)某個二元運算符兩邊的操作數(shù)類型不同但屬于類型相容時,系統(tǒng)先將精度低的操作數(shù)變換到與另一操作數(shù)精度相同,而后再進行運算。 類型相容:類型不同但系統(tǒng)可以自動進行轉(zhuǎn)換。當(dāng)賦值號的左值和右值類型不一致但屬于類型相容時,由系統(tǒng)自動進行類型轉(zhuǎn)換。
36、3 強 制 類 型 轉(zhuǎn) 換 1. 混合運算的類型轉(zhuǎn)換規(guī)則charshortintlongunsigned charunsigned shortunsigned intunsigned longfloatdoublelong double數(shù)據(jù)類型轉(zhuǎn)換方向ok具體規(guī)則:(1)字符可以作為整數(shù)參與數(shù)值運算,整數(shù)值為其ASCII碼。(2)操作數(shù)為字符或短整型時,系統(tǒng)自動變換成整型。(3)操作數(shù)為實型時,系統(tǒng)自動變換成雙精度型。(4)其余情況,當(dāng)兩操作數(shù)類型不同時,將精度低(或表示范圍小)的操作數(shù)的數(shù)據(jù)類型變換到與另一操作數(shù)類型相同再進行運算 例:char c1, c2; int i1, i2; flo
37、at x1, x2;則表達式x2=c1*i1+c1*x1+c1*c2的求值過程為:將c1轉(zhuǎn)換成整型,完成c1*i1,結(jié)果表示為t1;將c1和x1均轉(zhuǎn)換成雙精度型,完成c1*x1,結(jié)果表示為t2;將c1和c2均轉(zhuǎn)換成整型,完成c1*c2,結(jié)果表示為t3;然后t1轉(zhuǎn)換成雙精度型,完成t1+t2,結(jié)果表示為t4;將t3轉(zhuǎn)換成雙精度型,完成t4+t3,最后結(jié)果轉(zhuǎn)為單精度型賦給x2。 2.賦值類型轉(zhuǎn)換2.5.3結(jié)束系統(tǒng)自動進行類型轉(zhuǎn)換規(guī)則:1、實型數(shù)賦給整型變量:取整;注意溢出;2、整型數(shù)賦給實型變量:先轉(zhuǎn)換為實型數(shù);3、字符型數(shù)賦給整型變量:ASCII碼為依據(jù);分為兩種情況:符號位是0或1時不同;若符
38、號位為1,則低位字節(jié)不變,高位字節(jié)全部置1再賦值。4、絕對值較大的數(shù)賦給表達范圍較小的數(shù)據(jù)類型時,注意溢出; 賦值運算中,當(dāng)左值與右值類型不一致時,系統(tǒng)將按照左值的類型,自動進行強制轉(zhuǎn)換。例如: 設(shè)有以下定義 double x=2.3,y; int i=2,j;(1) j2.3x2.3 22(1) j=x;(2) y=i;由系統(tǒng)按左值j 、y類型自動完成強制轉(zhuǎn)換功能 (2) y2i2 2.02.03 強制類型轉(zhuǎn)換ok強制類型轉(zhuǎn)換運算符格式為: (type) 表達式 /C格式或 type (表達式)/C+格式作用:將表達式強制轉(zhuǎn)換為type類型, 但表達式的值及其類型不變。設(shè)有變量說明:int
39、a=7, b=5;float x;表達式 x=a/b的值將為1.0。如果希望表達式求出這兩個整數(shù)相除的實數(shù)商1.4賦給x,就需要將兩個操作數(shù)或其中一個操作數(shù)進行強制類型轉(zhuǎn)換。可表示為:x=(float)a/(float)b或x=(float)a/b說明:(1)強制類型轉(zhuǎn)換不改變表達式本身的值類型,而是產(chǎn)生一個臨時變量,用來暫存轉(zhuǎn)換后的值,該臨時變量引用后即自動釋放。如上例,執(zhí)行強制類型轉(zhuǎn)換后變量a和b的值及類型都不變,而是各自產(chǎn)生一個臨時變量,用這兩個臨時變量的值進行運算。(2)強制類型轉(zhuǎn)換符優(yōu)先級較高,只對緊隨其后的表達式起作用,而對其他部分不起作用。如表達式(float)a/b的含義是先將
40、變量a強制轉(zhuǎn)換為浮點數(shù),然后與整數(shù)b運算。新的C+標(biāo)準中,強制類型轉(zhuǎn)換采用static_cast,const_cast, dynamic_cast,reinterpret_cast等4個關(guān)鍵字,形式為static_cast,語法上更加嚴謹。1.6.5 求值次序與副作用(選讀) ok C+對運算符的結(jié)合性規(guī)定是很有意義的。C語言只有優(yōu)先級規(guī)定,而無結(jié)合性的規(guī)定,即 C語言的標(biāo)準對表達式中各操作數(shù)的求值次序沒有做統(tǒng)一規(guī)定。 編譯器在求表達式值時,首先要對表達式進行解析,不同編譯器在解析時可能存在差異。例如:設(shè)int a=2, b=5, c; 對表達式c=a*b+(+a)+(b=10)三個同級運算中
41、,是先算a*b,還是+a,還是b=10,其次再算哪個?顯然求值次序不同將導(dǎo)致結(jié)果不同。對于有的C編譯器,是按照從左向右的順序進行,即結(jié)果是23。而對另一些C編譯器,則是從右向左進行,結(jié)果是43。 如果某個變量經(jīng)歷了求值運算,那么這個求值過程可能影響到其他操作數(shù)的值,這時就會產(chǎn)生出乎意料的結(jié)果,稱為副作用(side effect)。1.6.5 求值次序與副作用(選讀) ok 求值次序帶來副作用的主要原因是使用復(fù)合表達式,這時交換律不一定成立。 如果將復(fù)合表達式分開寫成若干個簡單表達式,就可以有效消除副作用。例如上式可按照從前向后的次序?qū)懗桑篶=a*b;+a;b=10;c=c+a+b;或按照從后向
42、前的次序?qū)懗桑?a; b=10;c=a*b+a+b;雖然C+有結(jié)合性的規(guī)定,求值次序是固定的,但遵守上面的原則是規(guī)范的方法。如邏輯表達式求值優(yōu)化與結(jié)合性無關(guān),同樣會產(chǎn)生副作用。 1.7 數(shù)組與字符數(shù)組1.7.1 數(shù) 組1.7.2 字 符 數(shù) 組本節(jié)介紹一種用戶自定義的導(dǎo)出數(shù)據(jù)類型 數(shù)組類型ok1.7.1 數(shù)組數(shù)組定義:數(shù)組是有限個同類型元素的有序集合,這些元素有一個共同的名字,每個元素以其在數(shù)組中的位置區(qū)分,位置用下標(biāo)表示。例如數(shù)列或向量就可以看作一個數(shù)組,其中的元素用一個下標(biāo)即可確定。矩陣也可看作一個數(shù)組,其中的元素需要用“行”、“列”兩個下標(biāo)確定。數(shù)組下標(biāo)的個數(shù)稱作維數(shù),上述代表數(shù)列的數(shù)組
43、和代表矩陣的數(shù)組分別稱為一維數(shù)組和二維數(shù)組。本節(jié)只介紹一維數(shù)組。ok 一維數(shù)組一維數(shù)組的定義格式: 存儲類型 數(shù)據(jù)類型 數(shù)組名常量; 數(shù)據(jù)類型指的是數(shù)組中元素的數(shù)據(jù)類型,可以是C+中定義的任何一種數(shù)據(jù)類型。 寫在方括號中的常量用來定義數(shù)組大小,即數(shù)組中元素的個數(shù)。例如:int m5; /定義數(shù)組m, 其中有5個整數(shù) const int N=3; float xN;/數(shù)組x中有3個實數(shù)ok 一維數(shù)組數(shù)組的存儲: 數(shù)組在存儲單元中是按下標(biāo)的順序連續(xù)存放的,數(shù)組名代表數(shù)組存儲區(qū)域的首地址。數(shù)組的元素:標(biāo)識方法是用數(shù)組名和下標(biāo):數(shù)組名表達式表達式用來計算下標(biāo)值。C+中規(guī)定數(shù)組第一個元素的下標(biāo)為0。ok
44、m4m3m2m1m0 x2x1x0 一維數(shù)組注意:C+中數(shù)組大小在編譯時確定,編譯系統(tǒng)按照定義為數(shù)組分配一段連續(xù)的存儲單元,這段單元的大小也是不能改變的,因此數(shù)組大小不能用變量定義,而只能是一個正整數(shù)常量。為避免使用時數(shù)組出界,通常“打開小用”。下列定義是非法的:int count;float scount;/數(shù)組個數(shù)不能是變量,且必/須在定義時指明;const float Num=3;int nNum;/數(shù)組個數(shù)不能是實數(shù);對數(shù)組的訪問指的是對數(shù)組元素的訪問,不能直接將數(shù)組名作為訪問對象,對數(shù)組賦值也必須對每一個元素逐個賦值。ok 一維數(shù)組數(shù)組的初始化 數(shù)組初始化的方法是在定義時用大括號列出
45、元素的值。例如:int score5=88, 92, 90, 85, 78;初始化值的個數(shù)可以少于定義的元素個數(shù),這時從第0個元素開始逐個取得初始化值,剩余的元素初始化為0。例如:float y5=3.4, 4.2, 7; /5個元素的取值分別為3.4,4.2, 7, 0, 0對于定義時初始化的情況,可以不指明元素個數(shù),編譯器會按照初始化值的個數(shù)確定數(shù)組大小。例如:int n=1, 2, 3, 4;/數(shù)組n有4個元素int nn;/非法定義,必須指明數(shù)組元素個數(shù)okint_arr3=int_arr2=int_arr1=int_arr0=1123輸出:2.4.1結(jié)束31+2=3【例1.2】使用數(shù)
46、組的簡單例子。# include using namespace std;int main() int int_arr4; int_arr0=1; int_arr1=1; int_arr2=2; int_arr3=int_arr1+int_arr2; coutint_arr0n; return 0;1.7.2 字符數(shù)組字符數(shù)組定義:如果數(shù)組中的元素為字符,就稱為字符數(shù)組。例如:char string110; /可用來保存10個字符的字符數(shù)組char city_name1 =N, a, n, j, i, n, g; /可用來保存7個字符的字符數(shù)組;字符串與字符數(shù)組:C+中用字符數(shù)組保存字符串。允
47、許直接用字符串常量給字符數(shù)組初始化。例如:char city_name2=”Nanjing”;用字符串初始化,字符數(shù)組會自動加上一個串結(jié)束符0 。串結(jié)束符在字符串操作中具有十分重要的意義,因此在定義字符數(shù)組大小時,要注意留出足夠的空間保存串結(jié)束符。ok1.7.2 字符數(shù)組字符串處理函數(shù):字符串處理函數(shù)定義在頭文件中,其中包括: strlen(s)/返回字符串s的實際長度(不包括0 )strcpy(s1,s2)/將字符串s2中0 之前的所有字符/依次賦值到字符串s1中,最后再加上一個0 。由于不能直接對字符數(shù)組名賦值,所以將一個字符串的值賦給另一個字符串必須用字符串復(fù)制函數(shù)完成。例如:char
48、string220;string2=”VC+”;/非法strcpy(string2, ”VC+”);/合法1.7.2 字符數(shù)組【例1.3】 字符數(shù)組和字符串處理函數(shù)的應(yīng)用。# include # include using namespace std;int main( ) char s1 =Hello C+;/初始化決定數(shù)組s1有10個元素char s210, s320;s20= B; s21= e; s22= g; s23= i; s24= n; s25= 0 ; /對字符串結(jié)束處理非常重要strcpy(s3, s2);coutThe length of s1 is: strlen(s1)
49、 n;couts2 ts3變量名1變量名2變量名n; 輸出流對象cout:cout實現(xiàn)將數(shù)據(jù)輸出到顯示器的操作,一般格式為:cout表達式1表達式2表達式n; 使用時必須在程序開頭增加兩行:#include using namespace std;ok1.8.1 C+輸入輸出簡介1.8.2 數(shù)據(jù)的輸入輸出(1) cin例如:char c1, c2, c3;cinc1;/Acinc2c3;程序執(zhí)行到A行時,等待用戶輸入數(shù)據(jù)。若輸入:A b c 則cin分別將字符A、b、c賦給變量c1、c2、c3。cin自動跳過輸入的空白字符(包括空格,制表和回車等)。 ok1.字符的輸入輸出1.8.2 數(shù)據(jù)的輸入輸出(2)cinget()例如:char c1, c2, c3, c4;cin.get (c1);/Bcin.get (c2);cin.get (c3);程序執(zhí)行到B行時,若輸入:A b則執(zhí)行結(jié)果是:字符A、空格、字符b分別賦給變量c1、c2、c3;輸入行中仍保留回車符。 cin 與cinget( )的區(qū)別: cin.get()把從鍵盤上輸入的所有字符,包括空白字符,都作為輸入字符賦給字符變量 ok字符的輸出:使用cout。假定字符c1
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 16 太陽 教案 統(tǒng)編版五年級語文上冊
- 2024年九年級道德與法治下冊 第一單元 我們共同的世界 第一課 同住地球村 第2框 復(fù)雜多變的關(guān)系說課稿 新人教版
- 2 學(xué)會寬容 第一課時 說課稿-2023-2024學(xué)年道德與法治六年級下冊統(tǒng)編版
- 2025如何寫農(nóng)村土地承包合同范文
- 2025服裝代理商合同協(xié)議書范本
- 2《花的學(xué)?!氛f課稿-2024-2025學(xué)年統(tǒng)編版語文三年級上冊
- 隧道拆除專項施工方案
- 2024年五年級數(shù)學(xué)上冊 二 小數(shù)乘法 2小數(shù)的乘法第2課時 小數(shù)乘小數(shù)說課稿 冀教版
- 軍訓(xùn)訓(xùn)合同范例
- 黔江辦公室鋁扣板施工方案
- 2025年浙江省交通投資集團財務(wù)共享服務(wù)中心招聘2名高頻重點提升(共500題)附帶答案詳解
- 做投標(biāo)文件培訓(xùn)
- 9.4+跨學(xué)科實踐:制作簡易活塞式抽水機課件+-2024-2025學(xué)年人教版物理八年級下冊
- 建筑工程工作計劃
- 2025年中國國際投資促進中心限責(zé)任公司招聘管理單位筆試遴選500模擬題附帶答案詳解
- 瓶裝液化氣送氣工培訓(xùn)
- 外科護理課程思政課程標(biāo)準
- 船舶航行安全
- 道德經(jīng)全文完整版本
- 9.2溶解度(第1課時飽和溶液不飽和溶液)+教學(xué)設(shè)計-2024-2025學(xué)年九年級化學(xué)人教版(2024)下冊
- 2024年審計局公務(wù)員招錄事業(yè)單位招聘考試招錄139人完整版附答案【研優(yōu)卷】
評論
0/150
提交評論