




已閱讀5頁,還剩47頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1,第 3 章 數據類型、運算符及表達式,基本數據類型的存儲方式和表示方式 不同類型間數據轉換的原則與方法 有關運算符與表達式的運用,2,一個C程序是由一個或多個函數組成,函數體由若干條C語句組成,那么,C語句又是由什么組成?,思考,主函數 函數n,C語句1 C語句2 C語句n,關鍵字 標識符 字符集,C 程 序,3,注意:所有關鍵字都要用小寫英文字母表示,且不允許被用作標識符使用!,auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while,關 鍵 字,4,標 識 符,標識符是由英文字母、數字及下劃線構成的字符串,并且首字符必須為字母或下劃線。 用來標識常量、變量、函數名、數組名、類型定義符等。 注意:關鍵字是用戶標識符的禁區(qū)! 命名原則:見名知意!大小寫有區(qū)別! 不同C語言版本允許的長度不一樣 ANSI C為8個字符 Turbo C 為32,5,練習:請找出不合法的標識符.,union abc_123 2ab3 d+b abc8* INT,stu _bc8 abcdefghi -s10 *&%$# abc.123,6,字 符 集,字符集指的是程序設計語言中所采用的各種符號的集合,如字母、數字、標點符號、運算符號等。 字符是組成語言的最基本的元素。,C語言字符集,7,3.1 C 的數據類型,在程序中對用到的所有數據都必須指定其數據類型,3.2 常量與變量,常量的定義: 在程序執(zhí)行過程中值不發(fā)生改變的量。 常量的分類: 按數據類型分類 整型常量 4 -3 037 0xff 實型常量 -0.001 128.8 1.25e-3 字符常量 1 a D 按表現形態(tài)分類 字面常量或直接常量 符號常量,關于常量,9,符 號 常 量,概念 符號常量是一種特殊形式的常量,即用一個標識符表示一個常量。 定義形式 #define 常量名 常量值 含義清楚 在需要改變一個常量時能做到一改全改 一般用大寫字母表示 符號常量在程序中的應用,#define PI 3.1415926 #include void main( ) float r,a,c; r=2.5; a=PI*r*r; c=2*PI*r; printf(“r=%f,a=%f;c=%fn”,r,a,c); ,10,關于變量,變量的定義 變量是程序執(zhí)行過程中其值可以改變的量。 變量的分類 整型變量 實型變量 字符變量 變量的命名(同標識符的命名) 變量的使用 先定義后使用,每一個變量指定為一確定類型 含義清楚 count name day 一般用小寫字母表示,11,3.3 整 型 數 據 int,三種形式: 十進制數 如:12、345、0 八進制數(以0開頭) 如:012、045 十六進制數(0x開頭) 如:0x12、0x345,整型常量,0123 ( )10 0X123 ( )10 0XFF ( )10,83,255,291,例 30000為int型 65536為long int型,例 12與12L,整型常量的類型: 根據其值所在范圍確定其數據類型;,在整常量后加字母L或l,認為它是long int型常量。,十進制無符號整常數的范圍為065535,有符號數為3276832767 八進制無符號數的表示范圍為00177777 十六進制無符號數的表示范圍為0X00XFFFF,12,整型常量舉例,#include void main( ) printf(“%d,%o,%xn”,123,123,123); printf(“%d,%o,%xn”,023,023,023); printf(“%d,%o,%xn”,0x12,0x12,0x12); ,例:整型常量的不同進制表示。,%d,%o,%x是輸入輸出的格式字符串 d表示十進制 o表示八進制 x表示十六進制,上述程序中的n 表示輸出后回車換行!,13,分 類 基本型(int) 短整型(short int、short) 長整型(long int、long) 無符號型 無符號整型(unsigned int) 無符號短整型(unsigned short) 無符號長整型(unsigned long),整型變量,取值范圍 -3276832767 -3276832767 -21億21億 065535 065535 042億,所占位數 16 16 32 16 16 32,14,整型變量在內存中存儲,高字節(jié),低字節(jié),符號位 0表示正整數 1 表示負整數,采用補碼表示 正整數補碼與原碼相同 負整數補碼 = 原碼(取反)+1,例如 47 0x2F 原碼 0000,0000,0010,1111 取反 1111,1111,1101,0000 加1得到 - 47的補碼 1111,1111,1101,0001,取值范圍:-215 215-1 -3276832767,15,整型變量定義,定義形式 數值類型 變量名表; 說明 數值類型即類型說明符int、short、long等。 變量名表可為一個或多個變量名,之間用逗號間隔。 變量被定義后,其取值范圍也被確定。,#include void main( ) int a,b,c; a=4; b=5; c=a*b; printf(“a*b=%dn”,c); ,等價于: int a; int b; int c;,16,#include void main( ) int a,b; a=32767; b=a+1; printf(“%d,%d”,a,b); ,運行結果: 32767,32768,a:,b:,整型數據的溢出,32767,-32768,溢出不報錯 會出現不可預料后果,17,使用整型數據時的注意事項:,若某系統(tǒng)的C版本確定short int與int型數據在內存中占據的長度相同,則二者等價。 一個int型常量(-3276832767)可以賦值給int型變量或long型變量。 其值在-231231-1內,而在-215215-1外的整數只可賦值給long型變量。 int a; a=111111; 不報錯但結果不對 常量無unsigned型,但一個非負整數可賦值給unsigned型整數變量 ,但要注意值的范圍。 unsigned a; a=10; 不報錯但結果不對 長整型數的表示方法是在數值后面加字母l或L,如234L。 不同的數據類型有不同的存儲字長,使用時注意其取值范圍。,18,3.4 浮點型數據,浮點型常量 即實數。以十進制形式表示。 表示形式 小數形式:由數字和小數點組成 如1.56、 - 0.231 指數形式(科學計數法):小數E(或e)整數 “小數”表示實數的數值位,即尾數部分。 “E”代表十進制數的基數10。 “整數”表示10的乘冪。,浮點型常量,1.23103,3.918e-2,1.23E3,3.91810-2,注意:字母E 之前必須 有數字!,19,浮點型變量,分 類 單精度(float) 雙精度(double) 長雙精度(long double),有效數字 7位 1516位 1819位,所占位數 32 64 128,變量的定義 float x,y; /*指定x,y為單精度浮點型變量*/ double z; /*指定z為雙精度浮點型變量*/,浮點型常量不分單、雙精度,都按雙精度double處理。一個浮點型常量可以賦給一個float型或double型,根據變量的類型截取浮點型常量中相應的有效位數字。,如: float a; a=123456.123;,20,浮點型數據的舍入誤差,由于浮點型變量的存儲單元有限,因而小數部分的有效數字是有限的,超過部分將舍去。,/*例3.4*/ #include void main( ) float a,b; a=123456.789E5; b=a+20; printf(“%f”,b); ,運行結果: 12345678848.000000,避免大數與很小數直接加減 判斷兩個浮點型變量是否相等,是判斷二者的差的絕對值是否小于一個很小的數,21,變量初始化:定義時賦初值,變量的使用:先定義,后使用,變量定義位置:一般放在函數開頭,例: int a=2,b,c=4; float data=3.67; char ch=A; int x=1,y=1,z=1; int x=y=z=1;,例1 int student; stadent=19; /Undefined symbol statent in function main,例2 float a,b,c; c=a%b; /Illegal use of floating point in function main,22,3.5 字符型數據,概念:指用單引號(撇號)括起來的單個字符。 例 a b = 5 字符常量的值:該字符的ASCII碼值,字符常量,字符常量的分類 一般字符常量 x ? a A 2 轉義字符常量 以一個反斜杠“”開頭的字符序列,有特定含義。,ASCII碼(見教材P364附錄A) 8 位對字符編碼, 碼值0-255 032 為控制字符(不可印刷字符) 33-255為可印刷字符 128-255 為擴展ASCII碼,23,轉義字符常量表,101 - A 012 - n 376 - x61 - a 60 - 0 483 - (),24,#include void main( ) printf(“101 x42 Cn“); printf(“I say:“How are you?“n“); printf(“C Programn“); printf(“Turbo C“); ,運行結果:(屏幕顯示) A B C I say:”How are you?” C Program Turbo C,例 #include void main( ) printf(“Yb=n”); ,運行結果: 屏幕顯示:= 打印機輸出:,轉義字符的使用,25,運行結果: 屏幕顯示:,屏幕輸出在后面的字符會取代原來屏幕上該位置上顯示的字符,#include void main( ) printf(“_ab_ct_derftgn“); printf(“htibbj_k“); ,打印機輸出:,f,a,b,c,g,d,e,h,j,i,k,轉義字符的使用,26,字符變量,關于字符變量 字符變量用來存放字符常量。 一個字符變量只能存放一個字符常量。 一個字符變量在內存中占用一個字節(jié)的空間。,字符變量的定義格式: char 變量名表;,字符變量的賦值: 變量名字符常量; 變量名整型數據; 舉例: char c; char ch1,ch2; c=97;ch1=B;ch2=C;,27,#include void main( ) char c1,c2; c1=97;c2=98; printf(“%c,%cn”,c1,c2); printf(“%d,%dn”,c1,c2); ,#include void main( ) char c1,c2; c1=a;c2=b; c1=c1-32;c2=c2-32; printf(“%c,%c”,c1,c2); ,運行結果: A,B,字符變量存放字符ASCII碼 char與int數據間可進行算術運算 char與int數據可以相互賦值,運行結果: a,b 97,98,28,#define PRICE 12.5 #include void 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.50000, ch1=d,29,分 類 基本型(int) 短整型(short int、short) 長整型(long int、long) 無符號型 無符號整型(unsigned int) 無符號短整型(unsigned short) 無符號長整型(unsigned long),整型變量,取值范圍 -3276832767 -3276832767 -21億21億 065535 065535 042億,所占位數 16 16 32 16 16 32,30,浮點型變量,分 類 單精度(float) 雙精度(double) 長雙精度(long double),有效數字 7位 1516位 1819位,所占位數 32 64 128,31,字符變量,關于字符變量 字符變量用來存放字符常量。 一個字符變量只能存放一個字符常量。 一個字符變量在內存中占用一個字節(jié)的空間。,字符變量的定義格式: char 變量名表;,字符變量的賦值: 變量名字符常量; 變量名整型數據; 舉例: char c; char ch1,ch2; c=97;ch1=B;ch2=C;,32,概念:字符串常量是指用一對雙引號括起來的字符序列。如“ Hello”、 “good”等。 字符串常量的存儲: 系統(tǒng)自動在字符串的末尾加上一個字符串結束標記0,以此判斷字符串是否結束。 程序中長度為n個字符的字符串常量,在內存中需要用n+1個字節(jié)空間來存儲它。,字符串常量,例字符串“string”的存儲,33,字符常量與字符串常量的區(qū)別,二者表示形式不同。 字符常量的定界符是,而字符串常量的定界符是“”。 如:a是字符常量,而“a”是字符串常量。 存儲空間不同。 一個字符常量只占1個字節(jié),而一個含有單個字符的字符串常量需要占用2個字節(jié)。 如:a在內存中只占1個字節(jié),“a”則需占用2個字節(jié)空間。 不允許將一個字符串常量賦給一個字符型變量。 如:ch=a 是正確的;而ch=“a” 不正確。,34,允許定義變量的同時使變量初始化 例如: int a=3; 等價于 int a; a=3; 允許只對其中一部分變量賦初值 例如:int a=3,b,c=4; char ch1=x,ch2; 若有幾個變量初值相同,必須分別賦值 例如:int a=2,b=2,c=2;,3.6 變量賦初值,int a=b=c=2;,對字符型變量初始化時,既可以將字符用單引號括起來直接賦值,也可以使用該字符的ASCII碼進行賦值。 例如:char ch=A; 等價于 char ch=65;,35,變量的地址,程序運行時,變量的值以二進制的形式存儲在內存中。存儲空間的大小由變量的數據類型決定。,內存的編址: 內存分為若干個存儲單元。 每個單元存放一個字節(jié)的數據。 每個單元有唯一的一個地址。 變量存放在內存單元中,若變量所占空間包括多個存儲單元,則把首地址作為變量地址。,36,不同類型的數據混合運算,先轉換成同一類型,然后進行運算。,3.7 各類數值型數據間的混合運算,double,float,long,unsigned,int,char, short,必定的轉換,不同類型數據轉換方向,37,隱式轉換 運算轉換-不同類型數據混合運算時 賦值轉換-把一個值賦給與其類型不同的變量時 輸出轉換-輸出時轉換成指定的輸出格式 函數調用轉換-實參與形參類型不一致時轉換 顯式轉換(強制轉換) 一般形式:(類型名)(表達式) 例 (int)(x+y) (int)x+y (double)(3/2) (int)3.6 說明:強制轉換得到所需類型的中間變量,原變量類型不變 可能發(fā)生較高類型向較低類型轉換,不同類型數據間的轉換,/*例3.8*/ #include void main( ) float x; int i; x=3.6; i=(int)x; printf(“x=%f,i=%d”,x,i); ,結果:x=3.600000 , i=3,38,例如:習題3.9 (1) x+a%3*(int)(x+y)%2/4 x=2.5, a=7, y=4.7,2.5+7%3*(int)(2.5+4.7)%2/4,2.5+7%3*(int)(7.2)%2/4,2.5+1*7%2/4,2.5+7%2/4,2.5+1/4,2.5+0,2.5,39,按照運算類型分 算術運算符 +、-、*、/、% 關系運算符 、=、|、& 賦值運算符 =、+=、-=、*=、/=、%= 條件運算符 ? : 逗號運算符 , 指針運算符 *、& 求字節(jié)數運算符 sizeof 強制類型轉換運算符 (類型) 分量運算符 .(點)、 下標運算符 其他函數調用運算符 ( ),附錄C,C 運算符簡介,40,按照運算對象分 單目運算符:! 雙目運算符:+、- 三目運算符:? :,41,學習運算符應注意: 運算符功能 與運算量關系 要求運算量個數 要求運算量類型 運算符優(yōu)先級別 結合方向 結果的類型,賦值運算符與賦值表達式,逗號運算符與逗號表達式,邏輯運算符與邏輯表達式,算術運算符與算術表達式,優(yōu)先級別,低,高,關系運算符與關系表達式,42,例 5/2 = 5/-2 = -5/2.0 =,例 5%2 = -5%2 = 1%10 = 5%1 = 5.5%2,2 -2 -2.5,1 -1 1 0 (),基本算術運算符: + - * / %,優(yōu)先級:- -* / % -+ - 結合方向:從左向右 結果類型:先數據轉換再運算,若有一個運算數為實數,結果是double型。 兩整數相除,結果為整數;兩個實數相除,結果為實數。,3.8 算術運算符和算術表達式,% 要求兩側均為整型數據,注意表達式: 1/3*3 1*3/3 結果是否一樣?,43,例 j=3; k=+j; j=3; k=j+; j=3; printf(“%d”,+j); j=3; printf(“%d”,j+); a=3;b=5;c=(+a)*b; a=3;b=5;c=(a+)*b;,/k=4,j=4,/k=3,j=4,/4,/3,/c=20,a=4,/c=15,a=4,自增、自減運算符 + -,使變量值加1或減1,+i, -i (在使用i前,使i的值加減1) i+,i- (在使用i后,使i的值加減1 ),說明: + - 不能用于常量和表達式,只能用于變量。 如 5+,(a+b)+是不合法的 結合方向: 自右向左 優(yōu)先級: - + - - * / % - + -,例 -i+ -(i+) i=3; printf(“%d”,-i+);,44,(1) k=34512 a=6,(2) k=3339 a=6,例:設a=3 ,若執(zhí)行語句k=(a+)+(a+)+(a+)后的k值為多少?,turbo c運行結果,例:i+j= (i+)+j 還是= i+(+j)?,c編譯系統(tǒng)將盡可能多的將多個字符組成一個運算符, 并按自左而右的方法,為避免誤解最好采取都能理解的方法,寫成(i+)+j;,45,3.9 賦值運算符和賦值表達式,簡單賦值運算符 =,變量標識符=常量或表達式,說明: “”是一個雙目運算符,需要左右兩個運算量。 “”是賦值運算符,不等于等號,沒有相等的含義。 “”左端的運算量必須是單個變量,而不能是表達式。 賦值運算中,使運算符左端的變量具有右端表達式的值。,46,(1)a=a+1; 等價于:a+; (2) a=b=c=2; 連續(xù)賦值 等價于:a=(b=(c=2); 或者: a=2;b=2;c=2; (3) a=2+(b=3); 等價于:b=3;a=2+3=5; (4) a=(b=2)*(c=3); 等價于:b=2;c=3;a=2*3=6;,允許賦 值表達式中含 有另外的賦值 表達式,進行 連續(xù)賦值,舉 例,47,a+=3,a=a+3,x*=y+8,x=x*(y+8),x%=3,x=x%3,復合賦值運算符,+= = *= /= %= = &= = |=,在“=”之前加上其他運算符,48,賦值表達式,由賦值運算符將一個變量和一個表達式連接起來的式子,結合方向:自右向左,3=x-2*y; a+b=3;,a=b=c=5 a=(b=5) a=5+(c=6) a=(b=4)+(c=6) a=(b=10)/(c=2),/表達式值為5,a,b,c值為5,/ b=5;a=5,/表達式值11,c=6,a=11,/表達式值10,a=10,b=4,c=6,/表達式值5,a=5,b=10,c=2,a+=a-=a*a,( ),a+=a*=a-=a*=3,( ),( ),( ),
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 汽車構造試題及答案
- 嘉峪關面試題及答案
- 西安局筆試題庫及答案
- 企業(yè)治理面試題及答案
- 2025年警用摩托車項目規(guī)劃申請報告
- 重癥肺炎診療與管理體系
- 山東省濟寧市2024-2025學年八年級下學期學情監(jiān)測期末考試數學試卷(含答案)
- 支氣管哮喘病人健康教育
- 教師課堂安全培訓
- 智能園藝設備在高效節(jié)水農業(yè)中的應用與技術創(chuàng)新研究報告
- 幼兒園獲獎公開課:中班語言美術《有趣的西瓜皮》課件
- 室內零星維修工程施工方案
- 2025年02月海口市龍華區(qū)事業(yè)編制人員79人筆試歷年典型考題(歷年真題考點)解題思路附帶答案詳解
- 科技引領冰雪旅游智能設施與游客體驗的融合
- 2025年湖南金葉煙草薄片有限責任公司招聘筆試參考題庫含答案解析
- I-MR(單值-移動極差)控制圖
- 《鄒忌諷齊王納諫》比較閱讀82篇(歷年中考語文文言文閱讀試題匯編)(含答案與翻譯)(截至2024年)
- 工業(yè)生產設備投資資金使用計劃
- 政府應急管理與協(xié)調機制
- 除甲醛施工方案
- 三、油氣回收設備組成
評論
0/150
提交評論