




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第二章2022/10/311第一節
C語言數據類型簡介
第二節基本數據類型第三節運算符與表達式第四節不同類型數據間的轉換第二章數據類型、運算符與表達式2§2.1C語言數據類型簡介
二、什么是數據結構計算機的別名:數據處理機;數據元素:數據的最小單位;數據結構:數據元素的組織形式.把需要解決的問題用計算機能完全理解的方式描述給計算機。一、什么是程序設計程序設計=數據結構+算法+方法+工具程序設計=編程數據結構包括數據的邏輯結構和物理結構,它關系到軟件或程序的復雜程度。數據結構數據類型3數據的描述數據的操作程序類型運算符算法數據結構程序的任務是對數據進行處理,數據是程序處理的對象,而運算符是施加給這些數據的操作。數據和運算符是表達式的基本元素。
§2.2數據與數據類型4三、C語言數據類型§2.1C語言數據類型簡介5關于類型的含義存儲空間,且采取不同的存儲形式。取值范圍。操作。
§2.2基本數據類型6按照數據在程序中的取值:值保持不變-----常量x=2*y值隨程序運行變化-----變量基本類型整型int字符型char實型(浮點型)
§2.2基本數據類型7一、常量1.在程序運行中,其值保持不變。2.表示方法:整型100,125,-100字符型‘a’,‘b’字符串常量“string”3.符號常量:#用指定的標識符表示某個常量2.2.1常量與變量
§2.2基本數據類型8二、變量3.變量通過變量名標識1.在程序運行中,值發生變化2.必須先定義,再使用inta,b;類型變量名表變量memorya8263變量名和內存中的存儲單元相對應。編寫程序時通過變量名來存、取存儲單元。
§2.2基本數據類型9(1)以字母或下劃線開頭(2)不能用系統中的關鍵字作為變量名規定inta,bA123,_b;inta;…..A=5;4.有關變量名的規定(3)變量名中的字母是區分大小寫的。sum、stu_name、_age、Lts_1_2、a232
NAMEname表示兩個不同的標識符。不提倡大小寫混合使用
§2.2基本數據類型10一、整型常量有三種表示形式十進制八進制十六進制1234加前導001234,0125加前導0x0x123,0xffff整型數據包括整型常量和整型變量,
整型數據以二進制補碼形式存儲例
100、-8、0;010、024;0x38、0X1F2.3.2整型數據
§2.2基本數據類型11二、整型變量
掌握要點1有幾種定義形式2每種形式占存儲空間的大小3取值范圍4輸入輸出格式
§2.2基本數據類型121.定義形式共七種基本整型長整型短整型無符號整型無符號短整型無符號長整型雙長整型
intlongintshortintunsignedint2.占存儲空間一個變量4424字節unsignedshortunsignedlonglonglongint248
§2.2基本數據類型13
§2.2基本數據類型類型所占字節數據的范圍int4-2147483648~2147483647shortint(short)2-32768~32767longint(long)4-2147483648~2147483647unsignedint(unsigned)40~4294967295unsignedshort20~65535unsignedlong40~4294967295longlongint(longlong)8-9223772036854775808~922377203685477580714int型數的表示范圍:存儲長度16位二進制(2Byte)
0000000000000001000000000000001101111111111111111000000000000000上面的數再加1是多少?例int型表示數的范圍:-32768~327674.輸入輸出形式:%d,%ld,%x,%o,%u
§2.2基本數據類型15包括實型常量和實型變量一、實型常量有兩種表示形式小數指數3e-3實型常量只能用十進制形式表示,不能用八進制和十六進制1e5、1e-3.2、e、.e-032.2.3實型數據用指數表示實型常量的規則:
e或E之前之后必須有數字;指數必須為整數
§2.2基本數據類型161.定義形式共三種單精度雙精度長雙精度
floatdoublelongdouble2.占存儲空間一個變量488字節二、實型變量實型常量不區分單精度和雙精度
§2.2基本數據類型173.變量的取值范圍4.輸入輸出形式%f類型長度數的范圍有效數字單精度float4
10-38~1038
6---7位雙精度double
8
10-308~10308
15--16位長雙精度
longdouble
8
10-308~10308
18--19位
§2.2基本數據類型18實型數據在計算機中以指數形式存儲,單精度實型變量用一個字節存放指數部分,其余三個字節存數值部分。
7位二進制
23位二進制單精度實型2-23<=|尾數|<=1-2-23尾數指數
§2.2基本數據類型19包括字符型常量和字符型變量一、字符常量1.用單引號包含的一個字符2.只能包含一個字符例‘a’,‘A’,‘1’‘abc’“a”2.2.4字符型數據
§2.2基本數據類型20字符常量定義:用單引號括起來的單個普通字符或轉義字符.
字符常量的值:該字符的ASCII碼值<轉義字符及其含義:轉義字符含義\n\v\r\a\‘\ddd\t\b\f\\\“\xhh轉義字符含義換行垂直制表回車響鈴單引號3位8進制數代表的字符水平制表退格換頁反斜線雙引號2位16進制數代表的字符如‘\101’-----------‘A’‘\012’-----------’\n’‘\376’-----------’’‘\x61’-----------’a’‘\60’-----------’0’‘\483’----------()例:‘A’-------’\101’-------’\x41’--------65<如‘A’——65,‘a’——97,‘0’——48,‘\n’——10如‘a’‘A’‘?’‘\n’‘\101’轉義字符:反斜線后面跟一個字符或一個代碼值表示例轉義字符舉例(ch2_001.c,ch2_004.c)
main(){printf("\101\x42C\n");printf("Isay:\"Howareyou?\"\n");printf("\\CProgram\\\n");printf("Turbo\'C\'");}運行結果:(屏幕顯示)ABCIsay:”Howareyou?”\CProgram\Turbo‘C’例main(){printf(“Y\b=\n”);}運行結果:屏幕顯示:=打印機輸出:Y21二、字符串常量1雙引號內的一串字符“china”2n個字符組成的字符串常量,在內存中占空間為n+1
個字節。china\0字符串結束標記3C
中沒有專用的字符串變量“ThisisCstring”串長16“a”串長1“”(空格)串長1“”(不含空格)串長0
§2.2基本數據類型221.定義形式2.占存儲空間一個變量1字節三、字符型變量char一個字符變量只能包含一個字符3.輸入輸出形式%c‘a’
ASCII值為97內存中存儲形式011000014.字符型數據在內存中以相應的ASCII值存儲
§2.2基本數據類型23在ASCII范圍以內,整型數據!main(){charc;c=‘c’;printf(“%c%d”,c,c);}C99?例題目中有多個c,哪些是等價的?運行結果:
§2.2基本數據類型24例如:intadd(inta,intb);voidadd(inta,intb);2.2.5空類型
§2.2基本數據類型25
§2.3運算符與表達式一、運算符運算符運算分量X=5+b*c對數據進行運算的符號被加工的數據+表達式2.3.1C運算符簡介算術運算符賦值運算符關系運算符邏輯運算符逗號運算符條件運算符…...
C中運算符共34種26值1.運算符和運算分量構成表達式二.表達式算術表達式賦值表達式關系表達式邏輯表達式逗號表達式條件表達式…...
§2.3運算符與表達式27三.學習運算符應掌握的要點:*運算符的種類與功能*運算符與運算分量的關系個數類型A+B(a>b)
?
a:b目關系不同類型的變量,所允許的操作不同單目運算符雙目運算符三目運算符
§2.3運算符與表達式28*優先級:運算符的執行順序
*結合性:優先級相同時的結合方向*運算結果的類型X=5+8‘a’>100X=a+b*ca+b-c5>7>2a=b=5結果?單目運算符的優先級高于雙目運算符單目運算符從右向左結合雙目運算符從左向右結合
§2.3運算符與表達式292.4.2算術運算符和算術表達式1.共有5個:+,-,*,/,%2“-”作為負號時為單目單目:-雙目:*,/,%雙目:+,-4.優先級:
5.結合性:從左向右3.%運算只適用于整型數取模(求余數)a=10%4a的值為2
§2.3運算符與表達式302.4.3自增、自減運算符1.變量自身加(減)1
k=k+1k++先使用變量k的值,再加1++k
先加1,再使用變量k的值
k=k-1k--先使用變量k的值,再減1--k
先減1,再使用變量k
的值
k=3;printf(“%d”,k++);輸出3后,k的值為4i=3;printf(“%d”,++i);輸出4
§2.3運算符與表達式312.只能用于變量,不能用于表達式和常量3.優先級:高于雙目算術運算符4.結合性:從右向左(i+k)++,--3i=3;k=i+++i+++i++;i=?i=3;k=(++i)+(++i)+(++i);
§2.3運算符與表達式32例:
main(){inta,b,s;a=5;b=5;s=a+b;printf(“%d,%d,%d\n”,a,b,s);s=a+++b;printf(“%d,%d,%d\n”,a,b,s);s=++a+b;printf(“%d,%d,%d\n”,a,b,s);s=--a+b;printf(“%d,%d,%d\n”,a,b,s);s=a--+b;printf(“%d,%d,%d\n”,a,b,s);s=a+b;printf(“%d,%d,%d\n”,a,b,s);}
§2.3運算符與表達式33s=a+b;s=a+++b;s=++a+b;s=--a+b;s=a--+b;s=a+b;
a=5,b=55+5=105+5=107+5=126+5=116+5=115+5=10abs55106
5107
51265115
5115510題目分析s
§2.3運算符與表達式342.3.3關系運算符和表達式關系運算符種類:<<===>=>!=結合方向:自左向右優先級別:<<=>>===!=優先級6(高)優先級7(低)例c>a+b//c>(a+b)a>b!=c//(a>b)!=ca==b<c//a==(b<c)
a=b>c//a=(b>c)關系表達式的值:是邏輯值“真”或“假”,用1和0表示例inta=3,b=2,c=1,d,f;a>b(a>b)==cb+c<ad=a>bf=a>b>c//表達式值1//表達式值1//表達式值0//d=1//f=0
§2.3運算符與表達式35關系運算注意:例若a=0;b=0.5;x=0.3;
則a<=x<=b的值為0例5>2>7>8在C中是允許的,值為0例inti=1,j=7,a;a=i+(j%4!=0);
則a=2例‘a’>0結果為‘A’>100結果為10
§2.3運算符與表達式36關系運算注意:例注意區分“=”與“==”inta=0,b=1;if(a=b)printf(“aequaltob”);elseprintf(“anotequaltob”);例應避免對實數作相等或不等的判斷如1.0/3.0*3.0==1.0結果為可改寫為:fabs(1.0/3.0*3.0-1.0)<1e-60
§2.3運算符與表達式37ab!a!ba&&ba||b真假真假假假真真邏輯運算符和表達式邏輯運算符種類:!&&||邏輯運算真值表C語言中,運算量:0表示“假”,非0表示“真”,
運算結果:0表示“假”,1表示“真”,真假假假假假真真假假真真真假真真
§2.3運算符與表達式38!(2)&&(11)||(12)高低例a<=x&&x<=b
a>b&&x>ya==b||x==y!a||a>b優先級:結合方向:!:從右向左&&:從左向右||:從左向右//(a<=x)&&(x<=b)//(a>b)&&(x>y)//(a==b)||(x==y)//(!a)||(a>b)
§2.3運算符與表達式39!(2)&&(11)||(12)高低優先級:結合方向:!:從右向左&&:從左向右||:從左向右例a=4;b=5;!aa&&ba||b!a||b4&&0||25>3&&2||8<4-!0‘c’&&‘d’值為1值為0值為1值為1值為1值為1//(5>3)&&2||(8<(4-(!0)))值為1
§2.3運算符與表達式40!(2)&&(11)||(12)高低優先級:結合方向:!:從右向左&&:從左向右||:從左向右短路特性:邏輯表達式求解時,并非所有的邏輯運算符都被執行,只是在必須執行下一個邏輯運算符才能求出表達式的解時,才執行該運算符<>例a&&b&&c//只在a為真時,才判別b的值;只在a、b都為真時,才判別c的值例a||b||c//只在a為假時,才判別b的值;只在a、b都為假時,才判別c的值例a=1;b=2;c=3;d=4;m=1;n=1;(m=a>b)&&(n=c>d)//結果m=0,n=1
§2.3運算符與表達式41條件運算符與表達式一般形式:expr1?expr2:expr3執行過程功能:相當于條件語句,但不能取代一般if語句例if(a>b)printf(“%d”,a);elseprintf(“%d”,b);printf(“%d”,a>b?a:b);例求a+|b|printf(“a+|b|=%d\n”,b>0?a+b:a-b);expr1取expr2值取expr3值非0=0例(a==b)?’Y’:’N’(x%2==1)?1:0(x>=0)?x:-x(c>=‘a’&&c<=‘z’)?c-’a’+’A’:c條件運算符可嵌套
如x>0?1:(x<0?-1:0)優先級:13結合方向:自右向左如a>b?a:c>d?c:da>b?a:(c>d?c:d)expr1、expr2、expr3類型可不同,表達式值取較高的類型例x?‘a’:‘b’//x=0,表達式值為‘b’;x?0,表達式值為‘a’x>y?1:1.5//x>y,值為1.0;x<y,
§2.3運算符與表達式422.3.6賦值運算符賦值表達式1.將一個常量或一個表達式的值賦給一個變量稱為賦值x=5y=x+102.可以將一個實型賦給一個整型,或將一個整型賦給一個實型intx,x=5.3;x的值為5floaty,y=5;y的3.賦值運算的優先級比算術運算低4.賦值運算的結合性從右向左X=y=5
§2.3運算符與表達式43說明:結合方向:自右向左優先級:14左側必須是變量,不能是常量或表達式賦值表達式的值與變量值相等,且可嵌套賦值轉換規則:使賦值號右邊表達式值自動轉換成其左邊變量的類型例3=x-2*y;a+b=3;例
floatf;inti;i=10;f=i;則
例inti;i=2.56;//結果i=2;例:a=b=c=5a=(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=244復合賦值運算符和復合賦值表達式賦值運算符兩側出現相同的變量x=x+nx=x-nx=x*nx=x/nx=x%nx+=nx-=nx*=nx/=nx%=n算術運算與賦值運算相結合X與n均為整數x=x+nn為常數x+=n
§2.3運算符與表達式45說明:結合方向:自右向左優先級:14左側必須是變量,不能是常量或表達式賦值表達式的值與變量值相等,且可嵌套賦值轉換規則:使賦值號右邊表達式值自動轉換成其左邊變量的類型例:a=12;a+=a-=a*a例:inta=2;a%=4-1;a+=a*=a-=a*=3;//a=-264等價于a=a+(a=a-(a*a))//a=0等價于a=a+(a=a*(a=a-(a=a*3)))復合賦值運算符和復合賦值表達式46例main(){inta,b,c,d,e;a=2;b=5;c=6;d=10;a+=b;b-=c;c*=d;d/=a;a%=c;printf(“%d,%d,%d,%d\n”,a,b,c,d);
}結果?7,-1,60,1
§2.3運算符與表達式47一、逗號運算符,(表達式1,表達式2,表達式3,……表達式n)用于連接幾個表達式二、求解過程順序求解幾個表達式三、優先級逗號運算符的優先級最低四、結合性從左向右五、逗號表達式逗號表達式的值為最后一個表達式的值(表達式n的值)X=(
(a=4*5,a*2),a+6)a為?
20x為?262.3.7逗號運算符
§2.3運算符與表達式48
§2.4不同類型數據間的轉換
不同數據類型需先轉換成同一類型,然后進行運算方式自動進行-------隱式轉換強制進行-------顯式轉換一、隱式轉換(算術轉換)級別低的向級別高的轉換doublefloatlongunsignedintchar,shortinti;floatf;doubled;longe;表達式:10+’a’+i*f-d/e
的結果為:
double49二、顯式轉換(強制轉換)一般形式:(類型名)(表達式)例(int)(x+y)(int)x+y(double)(3/2)(int)3.6說明:強制轉換得到所需類型的中間變量,原變量類型不變例main(){floatx;inti;x=3.6;i=(int)x;printf(“x=%f,i=%d”,x,i);}結果:x=3.600000,i=3精度損失問題較高類型向較低類型轉換時可能發生
§2.4不同類型數據間的轉換
50一、C中的基本數據類型,每一種類型的定義方式(關鍵字),在存儲空間中所占的字節數,存儲形式,取值范圍。二、C中的運算符的幾個要點(功能,與運算分量的關系,優先級,結合性,運算結果的類型)。三、算術運算符中的%只使用在int類型。第二章總結四、自增,自減運算的特點,靈活使用k++,++k。五、復合的賦值運算規則。七、不同類型數據轉換時的優先順序八、單目運算,雙目運算的優先級和結合性特點熟記基本概念和規則!51二、補充習題:1、C語言規定,在源文件中,main()的位置:()
A、必須在最開始B、必須在庫函數后
C、可以在任意位置D、必須在所有函數最后2、一個C程序的執行是從:()A、從主函數開始,在主函數中結束;B、從第一個函數開始,到最后一個函數結束;C、從主函數開始,到最后一個函數結束;D、從第一個函數開始,到主函數中結束。3、下面選項中,全為不合法的用戶標識符
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T/SZIAM 0002-2024中央空調系統維護保養技術規范
- 合同教育信息咨詢服務合同4篇
- T/CHTS 20044-2024高速公路瀝青路面礦料及其加工技術指南
- 哌庫溴銨代銷合同6篇
- 2025年獵聘人才委托合同3篇
- 茶葉購銷合同范本6篇
- T/ZHCA 602-2020學校消毒操作技術規范
- 中華優傳統文化 課件 第十章 中國傳統藝術
- 2025甘孜職業學院輔導員考試試題及答案
- 教師個人工作年終總結
- 中醫食療學智慧樹知到期末考試答案2024年
- 中學德育工作頂層設計方案
- 抗滑樁施工監測監控措施
- 最新食品工程原理考卷
- 《基于VerilogHDL的樂曲演奏電路設計》
- 硅烷偶聯劑及其應用技術
- 甲狀腺的外科治療與病ppt課件
- 大壩填筑實施細則
- 敗血癥PPT優質課件
- 酸堿平衡判斷(杜斌教授)血氣分析六步法
- 07北工大高數工2期末考試A卷工答案1
評論
0/150
提交評論