版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符 第第2 2章章 基本數(shù)據(jù)類型與運算符基本數(shù)據(jù)類型與運算符 返回總目錄C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符目錄目錄 返回總目錄C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符基本要求:基本要求:)熟悉C語言的常用數(shù)據(jù)類型;)熟悉C語言的常用運算符;)熟練掌握輸入/輸出函數(shù)的使用。學習重點:學習重點:)C語言運算符的使用;)輸入/輸出函數(shù)的使用。C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符2.1基本數(shù)據(jù)類型和取值范圍基本數(shù)據(jù)類型和取值范圍基本數(shù)據(jù)類型和取值范圍基本數(shù)據(jù)類型和取值范圍 C C數(shù)數(shù)據(jù)據(jù)類類型型基本類型基本類型構造
2、類型構造類型指針類型指針類型空類型空類型void自定義自定義typedef數(shù)值類型數(shù)值類型字符類型字符類型char枚舉類型枚舉類型enum整整 型型浮點型浮點型單精度型單精度型float雙精度型雙精度型double短整型短整型short長整型長整型long整型整型int數(shù)組數(shù)組結構體結構體struct共用體共用體union數(shù)據(jù)類型決定:1. 數(shù)據(jù)占內(nèi)存字節(jié)數(shù)2. 數(shù)據(jù)取值范圍3. 其上可進行的操作 數(shù)據(jù)類型總表數(shù)據(jù)類型總表 返回目錄C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符 基本類型及范圍基本類型及范圍 (Visual C+ 6.0環(huán)境下環(huán)境下)2.1基本數(shù)據(jù)類型和取值范圍基本數(shù)據(jù)類型
3、和取值范圍基本數(shù)據(jù)類型和取值范圍基本數(shù)據(jù)類型和取值范圍 C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符常量與變量常量與變量 標識符標識符定義:用來標識變量、常量、函數(shù)等的字符序列定義:用來標識變量、常量、函數(shù)等的字符序列組成:組成:v只能由只能由字母字母、數(shù)字數(shù)字、下劃線下劃線組成,且第一個字母必須是字母或下劃組成,且第一個字母必須是字母或下劃線線v大小寫敏感大小寫敏感v不能使用關鍵字不能使用關鍵字命名原則:命名原則:v見名知意見名知意v不宜混淆不宜混淆 如如l l與與I, oI, o與與0 02.1基本數(shù)據(jù)類型和取值范圍基本數(shù)據(jù)類型和取值范圍C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運
4、算符常量與變量常量與變量 標識符標識符例例: :判斷下列標識符號合法性判斷下列標識符號合法性sum Sum M.D.John day Date 3days student_name #33 lotus_1_2_3 char ab _above $123M.D.John3days#33char$123ab2.1基本數(shù)據(jù)類型和取值范圍基本數(shù)據(jù)類型和取值范圍C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符常量與變量常量與變量 常量常量定義:程序運行時其值不能改變的量(即常數(shù))分類:v符號常量:用標識符代表常量l定義格式: #define 符號常量 常量如 #define PRICE 30例 符號常
5、量舉例#define PRICE 30main() int num,total; num=10; total=num*PRICE; printf(total=%d,total);l一般用大寫字母l是宏定義預處理命令,不是C語句v直接常量:l整型常量 l實型常量 l字符常量 l字符串常量2.1基本數(shù)據(jù)類型和取值范圍基本數(shù)據(jù)類型和取值范圍C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符常量與變量常量與變量 常量常量-整型常量整型常量(整常數(shù))(整常數(shù))三種形式:v十進制整數(shù):由數(shù)字09和正負號表示.如 123,-456,0v八進制整數(shù):由數(shù)字0開頭,后跟數(shù)字07表示.如0123,011v十六進制
6、整數(shù):由0 x開頭,后跟09,af,AF表示. 如0 x123,0Xff示例:0571 = (377 )100 x179 = (377 )100X179 = (377 )102.1基本數(shù)據(jù)類型和取值范圍基本數(shù)據(jù)類型和取值范圍C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符常量與變量常量與變量 常量常量-整型常量整型常量(整常數(shù))(整常數(shù))兩種長度:整型常量按長度劃分為兩種:短整型和長整型(后綴為小寫字母l或大寫字母L),從長度來看:vTurbo C中默認為短整型,如-377是一個短整型數(shù),而-377l或-377L表示-377是長整型數(shù)。v而在Visual C+ 6.0中默認為長整型,如-37
7、7、-377l或-377L均表示-377是長整型數(shù)。l 例:語句:printf(“%d,%d”,sizeof(-377),sizeof(-377L); 在Turbo C中的運行結果為:2,4而在VC中的結果為:4,4小結:從數(shù)據(jù)類型角度來分析,整型常量默認為int類型,而加上后綴(l或L)后,就是long int類型。2.1基本數(shù)據(jù)類型和取值范圍基本數(shù)據(jù)類型和取值范圍C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符常量與變量常量與變量 常量常量-實型常量實型常量(實數(shù)或浮點數(shù))(實數(shù)或浮點數(shù))表示形式:v十進制數(shù)形式:(必須有小數(shù)點) 如0.123, .123, 123.0, 0.0, 12
8、3.v指數(shù)形式:(e或E之前必須有數(shù)字;指數(shù)必須為整數(shù))如12.3e3 ,123E2, 1.23e4 , e-5e-5 , 1.2E-3.51.2E-3.5 實型常量的類型v默認double型v在實型常量后加字母f或F,認為它是float 型l例:語句:printf(“%d,%d”,sizeof(0.123),sizeof(0.123F); 在Turbo C和VC中的運行結果均為:8,42.1基本數(shù)據(jù)類型和取值范圍基本數(shù)據(jù)類型和取值范圍C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符常量與變量常量與變量 常量常量-字符常量字符常量定義:用單引號括起來的單個普通字符或轉義字符. 字符常量的值:
9、該字符的ASCII碼值如 a A ? n 101轉義字符:反斜線后面跟一個字符或一個代碼值表示如 A65, a97, 048 , n102.1基本數(shù)據(jù)類型和取值范圍基本數(shù)據(jù)類型和取值范圍C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符常量與變量常量與變量 常量常量-字符常量字符常量轉義字符及其含義:轉義字符含義nvraoootbf“xhh轉義字符含義換行垂直制表回車響鈴單引號3位8進制數(shù)ooo代表的字符水平制表退格換頁反斜線雙引號2位16進制數(shù)hh代表的字符2.1基本數(shù)據(jù)類型和取值范圍基本數(shù)據(jù)類型和取值范圍C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符常量與變量常量與變量 常量常量-字符
10、常量字符常量如 101 -A 012 -n 376 - x61 -a 60 -0 483 -()例:A-101-x41-65轉義字符示例:2.1基本數(shù)據(jù)類型和取值范圍基本數(shù)據(jù)類型和取值范圍C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符常量與變量常量與變量 常量常量-字符常量字符常量例 轉義字符舉例 main() printf(101 x42 Cn); printf(I say:How are you?n); printf(C Programn); printf(Turbo C);運行結果:(屏幕顯示)A B CIsay:”How are you?”C ProgramTurbo C例 mai
11、n() printf(“Yb=n”); 運行結果:屏幕顯示:=打印機輸出:2.1基本數(shù)據(jù)類型和取值范圍基本數(shù)據(jù)類型和取值范圍C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符常量與變量常量與變量 常量常量-字符串常量字符串常量定義:用雙引號(“”)括起來的字符序列存儲:每個字符串尾自動加一個 0 作為字符串結束標志h e l l o 0例 字符串“hello”在內(nèi)存中例 空串 “”0字符常量與字符串常量不同a a 0例 a“a”例: char ch; ch=“A”; 例: char ch; ch=A; 2.1基本數(shù)據(jù)類型和取值范圍基本數(shù)據(jù)類型和取值范圍C語言程序設計電子教案 第2章基本數(shù)據(jù)類型
12、與運算符常量與變量常量與變量 變量變量概念:其值可以改變的量變量名與變量值變量定義的一般格式: 數(shù)據(jù)類型 變量1,變量2,變量n;例例: int a,b,c; float data;決定分配字節(jié)數(shù)和數(shù)的表示范圍合法標識符2.1基本數(shù)據(jù)類型和取值范圍基本數(shù)據(jù)類型和取值范圍C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符常量與變量常量與變量 變量變量編譯程序根據(jù)變量定義為其分配指定字節(jié)的內(nèi)存單元.地址short a=1, b=-3,c;abc2字節(jié)2字節(jié)2字節(jié)地址地址.內(nèi)存1-3隨機數(shù)例: int a=2,b,c=4; float data=3.67; char ch=A; int x=1,y=
13、1,z=1; int x=y=z=1;變量初始化:定義時賦初值 2.1基本數(shù)據(jù)類型和取值范圍基本數(shù)據(jù)類型和取值范圍C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符常量與變量常量與變量 變量變量例1 int student; stadent=19; /本行語句有錯,符號本行語句有錯,符號 “stadent” 未定義未定義 例2 int a,b,c; c=a%b; /本行語句有錯,本行語句有錯,a、b沒有具體的值就參與運算沒有具體的值就參與運算 變量的使用:先定義,后使用2.1基本數(shù)據(jù)類型和取值范圍基本數(shù)據(jù)類型和取值范圍C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符常量與變量常量與變量 變量
14、變量main() int a,b=2; float data; a=1; data=(a+b)*1.2; printf(“data=%fn”,data);變量定義可執(zhí)行語句main() int a,b=2; a=1; float data; data=(a+b)*1.2; printf(“data=%fn”,data);變量定義位置:一般放在函數(shù)開頭2.1基本數(shù)據(jù)類型和取值范圍基本數(shù)據(jù)類型和取值范圍C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符常量與變量常量與變量 變量變量&整型變量占字節(jié)數(shù)隨機器不同而不同,一般占一個機器字shortintlong可用sizeof(類型標識符)測量
15、#include stdio.hmain() printf(int length=%d,sizeof(int);VC運行結果:int length=42.1基本數(shù)據(jù)類型和取值范圍基本數(shù)據(jù)類型和取值范圍C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符常量與變量常量與變量 變量變量&實型變量float:占4字節(jié),提供67位有效數(shù)字(跟C編譯系統(tǒng)有關,將實型數(shù)據(jù)按指數(shù)形式存儲時,一般若以24位二進制位表示小數(shù)部分(含符號),則對應的十進制有效數(shù)字為7位)double:占8字節(jié),提供1516位有效數(shù)字2.1基本數(shù)據(jù)類型和取值范圍基本數(shù)據(jù)類型和取值范圍#includemain() double
16、 a=1.234567890123456789e18; float b=a; printf(a=%.20len,a); printf(b=%.20len,b);程序輸出結果為:程序輸出結果為:c=1.23456789012345680000e18d=1.23456793955060940000e18C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符常量與變量常量與變量 變量變量&字符型變量字符變量存放字符ASCII碼char與int數(shù)據(jù)間可進行算術運算例 a=D; /* a=68; */ x=A+5; /* x=65+5; */ s=!+G /* s=33+71; */沒有字符串變量,
17、字符串用字符數(shù)組存放2.1基本數(shù)據(jù)類型和取值范圍基本數(shù)據(jù)類型和取值范圍C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符常量與變量常量與變量 變量變量變量綜合示例: #define PRICE 12.5 main() int num=3; float total; char ch1,ch2=D; total=num*PRICE; ch1=ch2-A+a; printf(“total=%f,ch1=%cn”,total,ch1); 運行結果:total=37.500000, ch1=d宏定義變量定義輸出結果2.1基本數(shù)據(jù)類型和取值范圍基本數(shù)據(jù)類型和取值范圍C語言程序設計電子教案 第2章基本數(shù)據(jù)類
18、型與運算符2.2運算符運算符優(yōu)先級與結合規(guī)則優(yōu)先級與結合規(guī)則 C運運算算符符算術運算符:(算術運算符:(+ - + - * * / % + - / % + -)關系運算符:(關系運算符:( = != = !=)邏輯運算符:邏輯運算符:(?。ǎ?& |& |)位運算符位運算符 :(:( | & | &)賦值運算符:(賦值運算符:(= = 及其擴展及其擴展)條件運算符:(條件運算符:(?:?:)逗號運算符:(逗號運算符:(, ,)指針運算符:(指針運算符:(* * & &)求字節(jié)數(shù)求字節(jié)數(shù) :(:(sizeofsizeof)強制類型轉換:(強制類型轉
19、換:(類型類型)分量運算符:(分量運算符:(. -. -)下標運算符:(下標運算符:()其它其它 :(:(( ) -( ) -) 運算符運算符 返回目錄C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符2.2運算符運算符優(yōu)先級與結合規(guī)則優(yōu)先級與結合規(guī)則 優(yōu)先級和結合規(guī)則總表優(yōu)先級和結合規(guī)則總表C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符2.2運算符運算符優(yōu)先級與結合規(guī)則優(yōu)先級與結合規(guī)則 & 不同級別的運算符按運算符的優(yōu)先級別確定計算不同級別的運算符按運算符的優(yōu)先級別確定計算順序,優(yōu)先級別高(即優(yōu)先級別數(shù)?。┑倪\算符順序,優(yōu)先級別高(即優(yōu)先級別數(shù)小)的運算符先計算:先計算:&
20、; 相同級別的運算符按結合規(guī)則確定計算順序。相同級別的運算符按結合規(guī)則確定計算順序。 例:表達式例:表達式3+43+4* *(12-6)/(1+2)(12-6)/(1+2)的計算順序為:的計算順序為:u (12126 6)6 6u (1 12 2)3 3u 4 4* *6 62424u 24/3=824/3=8u 3+8=113+8=11 運算符的計算規(guī)則運算符的計算規(guī)則C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符2.2運算符運算符賦值運算與連續(xù)賦值賦值運算與連續(xù)賦值 在在C C中,運算符中,運算符“=”=”是賦值運算符。是賦值運算符。 簡單賦值運算的一般形式為:簡單賦值運算的一般形式為
21、:變量變量= =表達式表達式其功能是將一個表達式的值賦給變量。其功能是將一個表達式的值賦給變量。如下表達式如下表達式a=b+ca=b+c該式讀作將表達式該式讀作將表達式b+cb+c的值賦給的值賦給a a。其本意是改。其本意是改寫變量寫變量a a的值,而不是判斷的值,而不是判斷b+cb+c與與a a是否相等,是否相等, 賦值運算賦值運算C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符2.2運算符運算符賦值運算與連續(xù)賦值賦值運算與連續(xù)賦值 連續(xù)賦值連續(xù)賦值在C語言中,賦值運算符的級別較低,為14級,并滿足右結合規(guī)則。因此表達式:x=y=z=1是連續(xù)賦值表達式,其功能相當于如下表達式的功能x=(y
22、=(z=1)它是先執(zhí)行表達式z=1,即將1賦給z,表達式值也為1,然后將表達式值1賦給y,即執(zhí)行y=1,表達式值也仍為1,再將表達式值1賦給x,即執(zhí)行x=1。C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符2.2運算符運算符算術運算算術運算 v結合方向:從左向右結合方向:從左向右v優(yōu)先級:優(yōu)先級: - - - -* * / % / % - - + -+ - (2) (3) (4)(2) (3) (4)說明:說明:l“-”“-”可為可為單目單目運算符時運算符時, ,右結合性右結合性l兩整數(shù)相除,結果為整數(shù)兩整數(shù)相除,結果為整數(shù)l% %要求兩側均為整型數(shù)據(jù)要求兩側均為整型數(shù)據(jù)例 5/2 = 2
23、-5/2.0 = -2.5例 5%2 = 1 -5%2 = -1 1%10 = 1 5%1 = 0 5.5%2 () 基本算術運算符:基本算術運算符: + - + - * * / % / %C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符2.2運算符運算符算術運算算術運算 自增、自減運算符自增、自減運算符+ -+ -v作用:使變量值加1或減1v種類:l前置 +i, -i (先執(zhí)行i+1或i-1,再使用i值)l后置 i+,i- (先使用i值,再執(zhí)行i+1或i-1)例例 j=3; k=+j; j=3; k=+j; j=3; k=j+; j=3; k=j+; j=3; printf(“%d”,+j
24、); j=3; printf(“%d”,+j); j=3; printf(“%d”,j+); j=3; printf(“%d”,j+); a=3;b=5;c=(+a) a=3;b=5;c=(+a)* *b; b; a=3;b=5;c=(a+) a=3;b=5;c=(a+)* *b; b; /k=4,j=4/k=4,j=4/k=3,j=4/k=3,j=4/4/4/3/3/c=20,a=4/c=20,a=4/c=15,a=4/c=15,a=4“先加后用先加后用”“先用后加先用后加”C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符2.2運算符運算符算術運算算術運算 自增、自減運算符自增、自減運算符
25、+ -+ -v說明:說明:l+ - + - 不能用于常量和表達式不能用于常量和表達式, ,如如5+5+,(a+b)+(a+b)+l+ -+ -結合方向:結合方向: 自右向左自右向左l優(yōu)先級:優(yōu)先級:- + - - + - -* * / % -+ - / % -+ - (2) (3) (4)(2) (3) (4)例例 -i+ -i+ -(i+) -(i+) i=3; printf(“%d”,-i+); i=3; printf(“%d”,-i+); /-/-3 3 例例 -i+ -i+ i=3; printf(“%d”,-i+); i=3; printf(“%d”,-i+); C語言程序設計電子教
26、案 第2章基本數(shù)據(jù)類型與運算符2.2運算符運算符算術運算算術運算 自增、自減運算符自增、自減運算符+ -+ -v特別提示:慎用特別提示:慎用+,-+,-運算符運算符! ! ! ! ! 4,34 5,3,2,23,34 3,2,2,2a=3; printf(%d,%dn,a,a+); printf(%dn,a);a=3; printf(%d,%d,%d,%dn,+a,a+,a+,-a);例例TC中結果:中結果:VC中結果:中結果:從例中可分析出:從例中可分析出:1 1、函數(shù)參數(shù)均按、函數(shù)參數(shù)均按從右到左從右到左的順序求值;的順序求值;2 2、對于后置運算,都遵循、對于后置運算,都遵循“先用后加先
27、用后加”規(guī)規(guī)則,但則,但“加加”的時機不同,的時機不同,TCTC中是用后馬中是用后馬上加上加,這樣下個左邊的參數(shù)用到的值是加,這樣下個左邊的參數(shù)用到的值是加后的值,而在后的值,而在VCVC中,用后不馬上加中,用后不馬上加,而是,而是在函數(shù)調(diào)用(在函數(shù)調(diào)用(printfprintf)完成后才加。)完成后才加。C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符2.2運算符運算符算術運算算術運算 自增、自減運算符自增、自減運算符+ -+ -v特別提示:慎用特別提示:慎用+,-+,-運算符運算符! ! ! ! ! 由上例知,由于由上例知,由于+,-+,-運算符在不同版本的運算符在不同版本的C C編譯系
28、統(tǒng)中使編譯系統(tǒng)中使用時會出現(xiàn)非預期的結果,因此要慎用用時會出現(xiàn)非預期的結果,因此要慎用! ! 例如:例如: a=3; printf(“%d,%d”,a,a+);a=3; printf(“%d,%d”,a,a+);在在有的系統(tǒng)中,函數(shù)參數(shù)是從左至右求值有的系統(tǒng)中,函數(shù)參數(shù)是從左至右求值,輸出,輸出“3,3”3,3”,在,在多數(shù)系統(tǒng)(如多數(shù)系統(tǒng)(如TCTC和和VCVC)中是從右至左求值)中是從右至左求值,輸出,輸出“4,3”4,3”或或“3,3”3,3”。因此,以上寫法不宜提倡,。因此,以上寫法不宜提倡,最好改最好改寫成:寫成: a=3; b=a+; a=3; b=a+; printf(“%d,%
29、d”,a,b);printf(“%d,%d”,a,b);或:或:a=3; b=a; a+; a=3; b=a; a+; printf(“%d,%d”,a,b);printf(“%d,%d”,a,b);則結果都是明確的則結果都是明確的( (輸出輸出“4,3”)4,3”)。C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符2.2運算符運算符算術運算算術運算 自增、自減運算符自增、自減運算符+ -+ -v特別提示:慎用特別提示:慎用+,-+,-運算符運算符! ! ! ! !總之,不要編寫讓人很難看懂,也不知總之,不要編寫讓人很難看懂,也不知道系統(tǒng)會怎樣執(zhí)行的程序。道系統(tǒng)會怎樣執(zhí)行的程序。所以,我們可
30、以通過一些含所以,我們可以通過一些含+,-+,-比較比較多的表達式來加深對其運算規(guī)則的理解,但多的表達式來加深對其運算規(guī)則的理解,但在實際編程中,除非不得已,否則絕對不要在實際編程中,除非不得已,否則絕對不要編寫含編寫含+,-+,-比較多的表達式。比較多的表達式。 從上面的介紹可知,含從上面的介紹可知,含+,-+,-比較多的比較多的復雜語句或有歧義的語句復雜語句或有歧義的語句完全可以用簡單完全可以用簡單易懂、結果明確的語句組替代易懂、結果明確的語句組替代。C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符2.2運算符運算符關系運算關系運算 關系運算又稱為比較大小運算,它有六個運關系運算又稱為比
31、較大小運算,它有六個運算符:算符: 、=、 、= 、=、 、=3 5=3 53 53 5=3 53 532532在數(shù)學上是恒成立的。但在在數(shù)學上是恒成立的。但在C C語言中,上式卻不成立,因為首先語言中,上式卻不成立,因為首先計算第一個大于號,其值為計算第一個大于號,其值為1 1,而后計算第二個大于號時,成為計,而后計算第二個大于號時,成為計算算1212,顯然不成立,其值為,顯然不成立,其值為0 0。實際上,連續(xù)比較大小時,表示幾。實際上,連續(xù)比較大小時,表示幾個條件同時滿足,因此若將上式改寫為條件表達式個條件同時滿足,因此若將上式改寫為條件表達式53 & 3253 & 32后
32、,則與數(shù)學上的的連續(xù)比較含意相符,表達式也是成立的。后,則與數(shù)學上的的連續(xù)比較含意相符,表達式也是成立的。 連續(xù)比較連續(xù)比較C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符2.2運算符運算符邏輯運算、連續(xù)比較和邏輯優(yōu)化邏輯運算、連續(xù)比較和邏輯優(yōu)化 邏輯優(yōu)化邏輯優(yōu)化n 邏輯與優(yōu)化。邏輯與優(yōu)化。從邏輯與運算從邏輯與運算a&ba&b的真值表中,我們可以的真值表中,我們可以看出,只要看出,只要a a值為值為0 0,不管,不管b b值如何,其運算結果都為值如何,其運算結果都為0 0,因,因此,在進行邏輯與運算時,此,在進行邏輯與運算時,只要計算出只要計算出a a值為值為0 0,則不需計
33、,則不需計算算b b值值,這種情況,我們稱之為邏輯與優(yōu)化,這種情況,我們稱之為邏輯與優(yōu)化。n 邏輯或優(yōu)化。邏輯或優(yōu)化。對于邏輯或運算對于邏輯或運算a|ba|b,只要計算出只要計算出a a值為值為1 1,則也不需計算,則也不需計算b b值,此時表達式值恒為值,此時表達式值恒為1 1,這種情況稱之,這種情況稱之為邏輯或優(yōu)化。為邏輯或優(yōu)化。 C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符2.2運算符運算符邏輯運算、連續(xù)比較和邏輯優(yōu)化邏輯運算、連續(xù)比較和邏輯優(yōu)化 例例2.42.4邏輯運算綜合舉例邏輯運算綜合舉例#include main() int x,y,z; x=y=z=0; +x|+y|+z
34、; printf(“x=%d y=%d z=%dn”,x,y,z); x=y=z=0; +x&+y|+z; printf(“x=%d y=%d z=%dn”,x,y,z); x=y=z=0; +x&+y&+z; printf(“x=%d y=%d z=%dn”,x,y,z); x=y=z=0; +x|+y&+z; printf(“x=%d y=%d z=%dn”,x,y,z); 程序運行結果為:程序運行結果為:x=1 y=0 z=0 x=1 y=1 z=0 x=1 y=1 z=1x=1 y=0 z=0C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符2.2運算符
35、運算符位運算位運算 位運算操作符位運算操作符表表2.5位運算符號表位運算符號表運算符運算符符號名符號名例子例子意義意義優(yōu)先級優(yōu)先級結合規(guī)則結合規(guī)則& &位與位與a&ba&ba a與與b b按位求與按位求與8 8左左 位異或位異或ababa a與與b b按位求異或按位求異或9 9左左| |位或位或a|ba|ba a與與b b按位求或按位求或1010左左 位反位反aa對對a a按位求反按位求反2 2右右右移位右移位ababa a向右移向右移b b位位5 5左左左移位左移位ababa a向左移向左移b b位位5 5左左C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符
36、2.2運算符運算符位運算位運算 異或運算異或運算異或運算真值表見表異或運算真值表見表2.6,即,即對應位對應位相同時為相同時為0 0,不同時為,不同時為1 1. 表表2.6異或運算真值表異或運算真值表a ab babab1 11 10 01 10 01 10 01 11 10 00 00 0C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符2.2運算符運算符位運算位運算 移位運算移位運算n 左移位運算左移位運算ababab:右邊移出的部分將丟棄,左邊空出的右邊移出的部分將丟棄,左邊空出的高位部分填補方法則根據(jù)高位部分填補方法則根據(jù)a a是否為帶符號數(shù)又分為兩種:是否為帶符號數(shù)又分為兩種: a
37、a為帶符號數(shù)時,左邊空出的高位部分用符號位填補;為帶符號數(shù)時,左邊空出的高位部分用符號位填補; a a為不帶符號數(shù)時,左邊空出的高位部分用為不帶符號數(shù)時,左邊空出的高位部分用0 0填補。填補。注意:注意:參與運算的數(shù)以參與運算的數(shù)以補碼補碼形式出現(xiàn)形式出現(xiàn).C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符2.2運算符運算符位運算位運算 例例2.52.5#include main() char a= -25,b=93,c; unsigned char d= -25; c=a&b;printf(“%dn”,c); c=a|b;printf(“%dn”,c); c=ab;printf(“%
38、dn”,c); c=a;printf(“%dn”,c); b=3; c=ab;printf(“%dn”,c); c=db;printf(“%dn”,c); a=25; c=ab;printf(“%dn”,c); c=ab) printf(“%d”,a); else printf(“%d”,b);printf(“%d”,ab?a:b);C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符v條件運算符可嵌套條件運算符可嵌套 如如 x0?1:(xb?a:cd?c:d ab?a:(cd?c:d)2.2運算符運算符條件運算條件運算例 求 a+|b| printf(“a+|b|=%dn”,b0?a+b:a-
39、b);例 (a=b)?Y:N (x%2=1)?1:0 (x=0)?x:-x (c=a & c=a=ba=ba=aba=ab%=%=a%=ba%=ba=a%ba=a%b=a=ba=ba=aba=ab表表2.72.7復合賦值運算符復合賦值運算符C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符2.2運算符運算符逗號運算逗號運算 形式:形式:表達式表達式1 1, ,表達式表達式2 2, ,表達式表達式n n 結合性結合性: :從左向右從左向右 優(yōu)先級優(yōu)先級: : 1515 計算過程:從前往后,依次計算計算過程:從前往后,依次計算 逗號表達式逗號表達式的值:等于表達式的值:等于表達式n n的值
40、的值例:#include main() int x,y=7; float z=4; x=(y=y+6,y/z); printf(x=%dn,x);X=3程序運行結果為:程序運行結果為:C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符2.2運算符運算符求字節(jié)數(shù)(求字節(jié)數(shù)(sizeof)sizeof)1 1)sizeofsizeof計算類型占用字節(jié)數(shù)的形式為計算類型占用字節(jié)數(shù)的形式為: :sizeofsizeof(類型)(類型)2 2)sizeofsizeof計算變量占用字節(jié)數(shù)的形式有兩種計算變量占用字節(jié)數(shù)的形式有兩種: :sizeofsizeof(變量)(變量)或或sizeof sizeof
41、變量變量 示例:示例: #includemain() int a=5; printf(%dn,sizeof(int); printf(%dn,sizeof(a); printf(%dn,sizeof a);222運行結果為:運行結果為:C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符2.2運算符運算符類型轉換類型轉換 算術運算類型轉換算術運算類型轉換算術運算中,當兩個運算數(shù)類型相同時,運算結果類型與原類算術運算中,當兩個運算數(shù)類型相同時,運算結果類型與原類型相同,當兩個運算數(shù)類型不同時,運算結果類型為級別較高的型相同,當兩個運算數(shù)類型不同時,運算結果類型為級別較高的數(shù)據(jù)類型。類型級別高低按下
42、述規(guī)則進行:數(shù)據(jù)類型。類型級別高低按下述規(guī)則進行:即字符型向整型轉換、整型向?qū)崝?shù)型轉換、短型向長型轉換、即字符型向整型轉換、整型向?qū)崝?shù)型轉換、短型向長型轉換、不帶符號型向帶符號型轉換。不帶符號型向帶符號型轉換。 C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符例如表達式:例如表達式:5/2+35/2+3* *4.5+24.5+2的運算結果為的運算結果為17.517.5,而不是,而不是18。因為因為5/2時,除法運算符時,除法運算符“/”兩邊運算數(shù)的類型都為整數(shù),其兩邊運算數(shù)的類型都為整數(shù),其運算結果類型也應為整數(shù)類型,其值當然為運算結果類型也應為整數(shù)類型,其值當然為2,而不是,而不是2.5;
43、乘;乘法法3*4.5兩邊運算數(shù)的類型不同,結果類型為級別高的類型,即兩邊運算數(shù)的類型不同,結果類型為級別高的類型,即實型,值為實型,值為13.5,整個表達式值為,整個表達式值為17.5。如將上述表達式改寫為:如將上述表達式改寫為:5/2.0+35/2.0+3* *4.5+24.5+2此時,其運算結果為此時,其運算結果為18.018.0,而不是,而不是17.5,請讀者自行分析。,請讀者自行分析。 2.2運算符運算符類型轉換類型轉換 算術運算類型轉換算術運算類型轉換C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符2.2運算符運算符類型轉換類型轉換 賦值轉換賦值轉換執(zhí)行賦值運算執(zhí)行賦值運算變量變量
44、a = a = 表達式表達式b b時,若時,若a a、b b類型相同,則直接將類型相同,則直接將b b賦給賦給a a即可,即可,若若a a、b b類型不同,則需先將類型不同,則需先將b b的類型轉換為的類型轉換為a a的的類型后再賦值,這種類型轉換,我們稱之為賦類型后再賦值,這種類型轉換,我們稱之為賦值類型轉換。值類型轉換。 C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符2.2運算符運算符類型轉換類型轉換 強制類型轉換強制類型轉換強制類型轉換的一般格式為:(目標類型)表達式(目標類型)表達式其功能是將表達式類型轉換為目標類型,其轉換方法同賦值轉換。如:float a=3.1;int i;i
45、=(int)a(int)a; ;則i的值為3。 C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符2.2運算符運算符類型轉換類型轉換 輸入輸入/ /輸出類型轉換輸出類型轉換示例:示例:#includemain() int a=15; char ch=A; printf(%dn,ch); printf(%Xn,a);65F程序運行結果為:程序運行結果為:詳見詳見“輸入輸入/輸出函數(shù)輸出函數(shù)”一節(jié)一節(jié)C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符2.3輸入輸入/輸出函數(shù)輸出函數(shù)格式化輸出函數(shù)格式化輸出函數(shù)printfprintf printf( ) printf( )函數(shù)調(diào)用格式函數(shù)調(diào)用格式5
46、#include 格式:格式:printf(“printf(“格式字符串格式字符串”,輸出表,輸出表) )功能:按指定格式向顯示器輸出數(shù)據(jù)功能:按指定格式向顯示器輸出數(shù)據(jù)輸出表:要輸出的數(shù)據(jù)(可以沒有,多個時以“,”分隔)格式控制串:包含兩種信息格式說明: %flagswidth.precisionF|N|h|ltypeflagswidth.precisionF|N|h|ltype, 用于指定輸出格式普通字符或轉義序列:原樣輸出 返回目錄C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符2.3輸入輸入/輸出函數(shù)輸出函數(shù)格式化輸出函數(shù)格式化輸出函數(shù)printfprintf Type Type類型
47、代碼及示例類型代碼及示例d,ix,Xoucse,Efg%十六進制無符號整數(shù)十六進制無符號整數(shù)不帶符號十進制整數(shù)不帶符號十進制整數(shù)十進制整數(shù)十進制整數(shù)指數(shù)形式浮點小數(shù)指數(shù)形式浮點小數(shù)單一字符單一字符字符串字符串八進制無符號整數(shù)八進制無符號整數(shù)小數(shù)形式浮點小數(shù)小數(shù)形式浮點小數(shù)e和和f中較短一種中較短一種,去去0百分號本身百分號本身int a=567;printf ( “%d”,a);int a=255;printf(“%x”,a);int a=65;printf(“%o”,a);int a=567;printf(“%u”,a);char a=65;printf(“%c”,a);printf(“%s
48、”,“ABC”);float a=567.789;printf(“%e”,a);float a=567.789;printf(“%f”,a);float a=567.789;printf(“%g”,a);printf(“%”);567ff101567AABC5.677890e+002567.789001567.789%p指針指針,int a=567; int *q=&a; printf(“%p,%X”,q,&a);FFF4,F(xiàn)FFF4以無符號的十六進制形式輸出變量的地址以無符號的十六進制形式輸出變量的地址 C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符說明說明vTypeTy
49、pe類型類型代碼字符與代碼字符與輸出項輸出項個數(shù)應相同,按先后順序一個數(shù)應相同,按先后順序一一對應。一對應。2.3輸入輸入/輸出函數(shù)輸出函數(shù)格式化輸出函數(shù)格式化輸出函數(shù)printfprintf程序運行結果為:程序運行結果為: Type Type類型代碼及示例類型代碼及示例3 4 a=3, b=4示例:示例:main( ) int a=3,b=4; printf(“%d %dn”,a,b); printf(“a=%d , b=%dn”,a,b);C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符說明說明v輸出類型轉換輸出類型轉換: :格式字符與輸出項類型不一致格式字符與輸出項類型不一致, ,按指
50、定按指定typetype類型輸出。類型輸出。輸出類型轉換與賦值類型轉換規(guī)律相同輸出類型轉換與賦值類型轉換規(guī)律相同。2.3輸入輸入/輸出函數(shù)輸出函數(shù)格式化輸出函數(shù)格式化輸出函數(shù)printfprintf程序在程序在VC中運行結果為:中運行結果為: Type Type類型代碼及示例類型代碼及示例u=1 u=4294967295示例:示例:main( ) int u=-1; printf(“u=%dn,u); printf(“u=%un”,u);C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符2.3輸入輸入/輸出函數(shù)輸出函數(shù)格式化輸出函數(shù)格式化輸出函數(shù)printfprintf 可選格式說明符可選格式
51、說明符寬度寬度 width width 定義輸出數(shù)據(jù)域?qū)挾x輸出數(shù)據(jù)域?qū)?。?shù)據(jù)長度。數(shù)據(jù)長度width,width,左補空格左補空格; ;否則按實際否則按實際輸出寬度。當輸出寬度。當widthwidth值前加值前加0 0時,表示左邊空位用時,表示左邊空位用0 0填補。填補。程序運行結果為:程序運行結果為:a= 888 a=000888示例:示例:main( ) int a=888; printf(a=%6dn,a); printf(a=%06dn,a);C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符2.3輸入輸入/輸出函數(shù)輸出函數(shù)格式化輸出函數(shù)格式化輸出函數(shù)printfprintf 可選格
52、式說明符可選格式說明符精度精度 .precision .precision 精度作用于浮點數(shù)精度作用于浮點數(shù)%f,%e,%E:%f,%e,%E:精度表示精度表示“小數(shù)點后最多顯示位數(shù)小數(shù)點后最多顯示位數(shù)”,默,默 認值為認值為6 6 精度作用于精度作用于%g,%G:%g,%G:精度表示精度表示“有效位的數(shù)目有效位的數(shù)目” 精度作用于字符串精度作用于字符串%s:%s:精度表示精度表示“最大字符串位數(shù)最大字符串位數(shù)” 精度作用于整數(shù)精度作用于整數(shù): :精度決定精度決定“必須顯示的最小位數(shù)必須顯示的最小位數(shù)”,不足時補前導,不足時補前導0 0。程序運行結果為:程序運行結果為:123.1235 000
53、01234This is a simpl例例2.12: main( ) printf(%.4fn,123.1234567); printf(%3.8dn,1234); printf(%10.15sn,This is a simple test);C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符2.3輸入輸入/輸出函數(shù)輸出函數(shù)格式化輸出函數(shù)格式化輸出函數(shù)printfprintf 可選格式說明符可選格式說明符標志標志 flags flags 程序運行結果為:程序運行結果為:示例:對齊符示例:對齊符”-” main( )printf(%8dn,12345);printf(%8dn,12);prin
54、tf(%-8dn,12345);printf(%-8dn,12); “-”“-”:表示左對齊,缺?。礇]有表示左對齊,缺?。礇]有”-”號時)為右對齊號時)為右對齊; “0”0”:輸出數(shù)值時指定左面不使用的空位置自動填輸出數(shù)值時指定左面不使用的空位置自動填0 ; “+”+”:指定在有符號數(shù)指定在有符號數(shù)的正數(shù)前顯示正號的正數(shù)前顯示正號(+); “#”#”:在八進制和十六進制數(shù)前顯示前導在八進制和十六進制數(shù)前顯示前導0,0 x 或或0X; 12345 121234512C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符2.3輸入輸入/輸出函數(shù)輸出函數(shù)格式化輸出函數(shù)格式化輸出函數(shù)printfpri
55、ntf 可選格式說明符可選格式說明符標志標志 flags flags 程序運行結果為:程序運行結果為:示例:示例:“0”與與“” main() printf(%+08dn,12345);printf(%+8dn,12);printf(%-8dn,12345);printf(%-8dn,12); “-”“-”:表示左對齊,缺?。礇]有表示左對齊,缺?。礇]有”-”號時)為右對齊號時)為右對齊; “0”0”:輸出數(shù)值時指定左面不使用的空位置自動填輸出數(shù)值時指定左面不使用的空位置自動填0 ; “+”+”:指定在有符號數(shù)指定在有符號數(shù)的正數(shù)前顯示正號的正數(shù)前顯示正號(+); “#”#”:在八進制和十六
56、進制數(shù)前顯示前導在八進制和十六進制數(shù)前顯示前導0,0 x 或或0X;+0012345 +121234512C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符2.3輸入輸入/輸出函數(shù)輸出函數(shù)格式化輸出函數(shù)格式化輸出函數(shù)printfprintf 可選格式說明符可選格式說明符標志標志 flags flags “-”“-”:表示左對齊,缺省(即沒有表示左對齊,缺?。礇]有”-”號時)為右對齊號時)為右對齊; “0”0”:輸出數(shù)值時指定左面不使用的空位置自動填輸出數(shù)值時指定左面不使用的空位置自動填0 ; “+”+”:指定在有符號數(shù)指定在有符號數(shù)的正數(shù)前顯示正號的正數(shù)前顯示正號(+); “#”#”:在八進
57、制和十六進制數(shù)前顯示前導在八進制和十六進制數(shù)前顯示前導0,0 x 或或0X;程序運行結果為:程序運行結果為:示例:示例:”#” main() printf(%#8xn,0 x1234);printf(%#8xn,0 x12);printf(%-#8on,01234);printf(%-#8on,012); 0 x1234 0 x12 01234012C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符2.3輸入輸入/輸出函數(shù)輸出函數(shù)格式化輸出函數(shù)格式化輸出函數(shù)printfprintf 可選格式說明符可選格式說明符標志標志 h|l h|l 程序運行結果為:程序運行結果為:示例:示例:”h”與與“l(fā)
58、” main() printf(%hdn,65536);printf(%hon,8);printf(%lun,65536);printf(%lxn,65536);printf(%len,5000000000.0);printf(%lfn,5000000000.0);printf(%lgn,5000000000.0);01065536 100005.000000e+0095000000000.0000005e+009 “h”“h”:在在d,o,x,u前,指定輸出精度為前,指定輸出精度為short型型; “l(fā)”“l(fā)”:在在d,o,x,u前,指定輸出精度為前,指定輸出精度為long型型; 在在e,f
59、,g前,指定輸出精度為前,指定輸出精度為double型;型; C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符2.3輸入輸入/輸出函數(shù)輸出函數(shù)格式化輸出函數(shù)格式化輸出函數(shù)printfprintf 可選格式說明符可選格式說明符標志標志 F|N F|N “F”“F”:在在p前,指定為遠指針前,指定為遠指針(32位位),表示段地址:偏移地表示段地址:偏移地址址; “N”“N”:在在p前,指定為近指針前,指定為近指針(16位位),表示段內(nèi)偏移地址表示段內(nèi)偏移地址;TC程序運行結果為:程序運行結果為:示例:示例:”F”與與“N” main() char far *q1=(char far *)0 xB
60、5000002; char near *q2=(char near *)0 x452; printf(%Fpn,q1); printf(%Npn,q2);B500:00020452注意:在注意:在VCVC中運行本程序時,會出現(xiàn)中運行本程序時,會出現(xiàn)far is an obsolete keyword或或near is an obsolete keyword之類的錯誤,表之類的錯誤,表示在示在VC中,中,far和和near是已經(jīng)被廢棄的關鍵字。是已經(jīng)被廢棄的關鍵字。C語言程序設計電子教案 第2章基本數(shù)據(jù)類型與運算符2.3輸入輸入/輸出函數(shù)輸出函數(shù)格式化輸入函數(shù)格式化輸入函數(shù)scanfscanf scanf( ) scanf( )函數(shù)調(diào)用格式函數(shù)調(diào)用格式格式:格式:scanf(“scanf(“格式字符串格式字符串”,地址表,地址表) )功能:按指定格式從鍵盤讀入數(shù)據(jù),存入地址表指定的功能:按指定格式從鍵盤讀入數(shù)據(jù),存入地址表指定的 存儲單元中。存儲單元中。地址表:變量的地址,常用
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度廚師技能培訓與聘用合同范本3篇
- 加彈網(wǎng)絡絲行業(yè)行業(yè)發(fā)展趨勢及投資戰(zhàn)略研究分析報告
- 2025年度消防產(chǎn)品認證代理服務合同標準版4篇
- 中國家用表面清潔劑行業(yè)發(fā)展前景預測及投資戰(zhàn)略研究報告
- 2025年綿羊皮女洋裝項目投資可行性研究分析報告
- 2025年度個人汽車租賃保險理賠細則合同4篇
- 環(huán)保PPP模式應用市場供需現(xiàn)狀及投資戰(zhàn)略研究報告
- 2025年度汽車租賃合同范本適用于二零二五年度11篇
- 2025年度個人房產(chǎn)買賣合同(含家具家電)
- 2025年廣州越秀企業(yè)集團有限公司招聘筆試參考題庫含答案解析
- 遼寧省葫蘆島市2024-2025學年高三上學期1月期末語文試題及參考答案
- 2025年1月浙江高考英語聽力試題真題完整版(含答案+文本+MP3)
- 《榜樣9》觀后感心得體會一
- 虛擬偶像市場分析-洞察分析
- 2025年湖北黃石市大冶市中小企業(yè)融資擔保有限責任公司招聘筆試參考題庫附帶答案詳解
- 2025年神經(jīng)外科護理工作計劃
- 鋼結構施工管理培訓課件
- 2024年度工程建設項目安全評價合同2篇
- 《飛機操縱面》課件
- 商業(yè)咨詢報告范文大全
- 自我發(fā)展與團隊管理課件
評論
0/150
提交評論