




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
上一節我們學到了各種類型常量、轉義字符、ASCII碼5.05.0f'a'""""保存不變量的兩種方法:#defineconst變量先聲明后使用標識符的命名規則variableNameCONST_VARIABLE_NAME7/23/20231內容3.1順序程序設計舉例3.2數據的表現形式及其運算3.3C語句3.4數據的輸入輸出7/23/20232內容3.1順序程序設計舉例3.2數據的表現形式及其運算3.2.1常量和變量3.2.2數據類型3.2.3整型數據3.2.4字符型數據3.2.5浮點型數據3.2.6怎樣確定常量的類型3.2.7運算符和表達式3.3C語句3.4數據的輸入輸出7/23/202333.2.2數據類型不同的類型分配不同的長度和存儲形式。7/23/20234基本數據類型(DataType)int整數,在目前絕大多數機器上占4個字節TC2中是2個字節所占字節數取決于機器字長float單精度浮點數,一般是4個字節長double雙精度浮點數,一般是8個字節長char字符,一般是1個字節長用來表示256個ASCII字符,或者0~255的整數7/23/20235sizeof.c#include<stdio.h>#include<stdlib.h>intmain(void){printf("類型\t\t大小(bytes)\n");printf("short\t\t%d\n",sizeof(short));printf("int\t\t%d\n",sizeof(int));printf("long\t\t%d\n",sizeof(long));printf("float\t\t%d\n",sizeof(float));printf("double\t\t%d\n",sizeof(double));printf("longdouble\t%d\n",sizeof(longdouble));printf("char\t\t%d\n",sizeof(char));
return0;}7/23/20236數據類型修飾符shortshort
int,短整數,一般2個字節長。通常簡寫為shortlonglong
int,長整數,一般是4個字節長。通常簡寫為longlong
double,高精度浮點數,VC6占8個字節。signed用來修飾char、int、short和long,說明他們是有符號的整數(正整數、0和負整數)。一般缺省都是有符號的,所以這個修飾符通常省略unsigned用來修飾char、int、short和long,說明他們是無符號的整數(正整數和0)7/23/202373.2.3整型數據以補碼形式存儲正整數:本身負整數:對應正整數按位取反+1Q:下面的語句輸出?unsignedshortprice=-1;printf("%d\n",price);A:65535why?-1的補碼:1111111111111111最左一位不是符號7/23/20238整型類型的取值范圍---取決于字節數limits.h7/23/2023915位215-1=327672個字節有符號整數的最小最大值最大值0111111111111111=215-1=32767
最小值10000=-327687/23/202310超出取值范圍會怎樣?VC6中int的范圍是-2147483648~2147483647-231~231-1如果我們給它一個小于-2147483648或者大于2147483647的數會如何呢?小蛇能吞下大象嗎?7/23/202311整數溢出/*toobig.c-exceedsmaximumintsizeonoursystem*/#include<stdio.h>intmain(void){inti=2147483647;//int最大值unsignedintj=4294967295;//unsignedint最大值printf("%d%d%d\n",i,i+1,i+2);printf("%u%u%u\n",j,j+1,j+2);return0;}輸出:2147483647-2147483648-2147483647
429496729501%u:以無符號整數形式輸出7/23/202312溢出(Overflow)造成的危害一臺安裝了Windows95/98的機器,如果連續運行49.7天沒有重新啟動,可能死機原因:Windows自啟動時刻起,有一個計數器,記錄系統已經運行了多少毫秒。這個計數器是個unsigned
long類型的變量unsigned
long的最大值是:4294967295一天有24*60*60*1000=86400000毫秒4294967295/86400000=49.71026961805……當49.7天的時候,此計數器會溢出,引起死機7/23/2023133.2.4字符型數據Q:輸出結果?charc='?';printf("%d%c\n",c,c);A:63?Q:輸出結果?charc=255;
printf("%d\n",c);A:-1why默認signed如改為unsignedcharc=255;輸出2557/23/2023143.2.5浮點型數據double范圍大、精度高、速度稍快VC6TC27/23/202315浮點類型的取值范圍float.h7/23/202316浮點數的存儲7/23/202317IEEE標準7/23/202318浮點數的陷阱#include<stdio.h>intmain(){
floatf;
f=123.456f;
if(f==123.456)
printf("fisequalto123.456indeed.");
else
printf("Infact,fisequalto%f\n",f); return0;}float.cQ:運行結果會是什么?7/23/202319浮點數的陷阱浮點數往往只是實際值的近似float的精度低,較易發生精度帶來的相等性判斷問題double精度高,這個問題發生的概率小一些,但也存在解決辦法:
if(fabs(f–123.456)<1E-5)
……根據精度要求設定7/23/2023203.2.6怎樣確定常量的類型編譯器把實型常量默認為doubleconstfloatPI=3.14159f;longdoubled=1.23L;實型常量后加f或F,表示double實型常量后加L,表示longdouble7/23/2023213.2.7運算符和表達式7/23/202322算術運算符-負號:-expr1,returnsthenegationofexpr1.+,-,*,/先算乘除,后算加減,先算左,后算右printf("%d\n",
1+2*3);printf("%d\n",
1
+
2
+
3/4);printf("%d\n",
(1+2+3)/4);VC6中商向零靠攏-5/3=-1%求余運算,運算對象必須為整數7/23/202323自增和自減運算符i++,i--,++i,--i++讓參與運算的變量加1,--讓參與運算的變量減1運算符為后綴,先取i的值,然后加/減1,即先運算,后加減運算符為前綴,先加/減1,然后取i的值,即先加減,后運算i的初值為3,分析下面的賦值語句j=++i;j=i++;i=3;....7/23/202324++、--的使用規則在程序設計中,效率和易讀性是一對常見矛盾。有時簡潔的程序可能降低程序的可讀性和可理解性。而可讀性差的程序容易隱藏錯誤且難于糾正,不易維護,降低了程序的可靠性。鑒于“軟件危機”的教訓,人們在程序設計時遵守的基本規范是:可靠性第一,效率第二。為了保證可靠性,程序必須清晰易讀。因此,在一行語句中,使用自增或者自減運算的變量盡量只有1個不僅可讀性差,而且因為編譯器實現的方法不同,容易導致不同編譯器運行效果不一樣,貽害無窮7/23/202325類型轉換在進行賦值操作時,會發生類型轉換將取值范圍小的類型轉為取值范圍大的類型是安全的反之是不安全的如果大類型的值在小類型能容納的范圍之內,則平安無事但是,浮點數轉為整數,會丟失小數部分(非四舍五入)反之,轉換后的結果必然是錯誤的,具體結果與機器和實現方式有關。避免如此使用7/23/202326自動類型轉換兩個同種數據類型的運算結果,還是該類型兩個不同種數據類型的運算結果,是兩種類型中取值范圍更大的那種long
double>(double>float>long>int>short>char)只要兩者中有一個是unsigned,就都轉為unsigned再計算把數據賦值給另外一種類型變量也會發生自動類型轉換從小到大,順利轉換從大到小,發出警告(好的編譯器會給出)7/23/202327自動類型轉換舉例inti=3;floatf=2.5f;doubled=7.5;分析10+'a'+i*f-d/3編譯時,從左至右掃描。1.先計算10+'a'(97),結果為1072.先計算優先級高的i*f,將i和f轉換為double型,結果為7.5,double型3.......12+'A'//12+65('A'的ASCII碼)7/23/202328例3.3給定一個大寫字母,要求用小寫字母輸出。//3_3.c--給定一個大寫字母,要求用小寫字母輸出#include<stdio.h>intmain(){charcUpper,cLower;cUpper
=
'A';cLower=cUpper+32;printf("%c\n",cLower);printf("%d\n",cLower);return0;}7/23/202329類型強轉可以通過“(類型)表達式”的方式把表達式的值轉為任意類型(double)a(將a轉換成double類型)(int)(x
+
y)(將x+y的值轉換成int型)(float)(5
%
3)(將5%3的值轉換成float型)注意強轉時,你必須知道你在做什么強轉與指針,并稱C語言兩大神器,用好了可以呼風喚雨,用壞了就損兵折將7/23/202330這一節我們學到了數據類型char,short,int,long,float,double,long
doublesigned,unsigned算術運算、自增/自減運算類型轉換7/23/202331找別扭inta
=
1;
if(a==0)
printf("OK");inta
=
0;
if(a==0)
printf("OK");inta
=
1;
if(a=0)
printf("OK");inta
=
0;
if(a=0)
printf("OK");7/23/202332==和=inta;
a=0;
a==1;inta;
a==0;
a=1;一定要分清==和=下面用法能起點小作用:inta=0;
if(0==a)
printf("OK");inta=0;
if(0=a)
printf("OK");編譯出錯7/23/202
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教版一年級上冊數學樂園教案及反思
- 人教版小學二年級上冊數學 2.1.4 練習二 課時練
- 城市基礎設施建設項目承包合同2025
- 房產買賣合同范例
- 采購家具合同范本
- 2025授權財務合同書
- 《瑞士山間小鎮規劃案調整》課件
- 2025裝修工人勞動合同協議書示例
- 2025石油買賣合同書范本
- 高中化學人教版 (新課標)選修4 化學反應原理第三節 鹽類的水解第2課時教案及反思
- 西安信息職業大學《形勢與政策(7)》2023-2024學年第一學期期末試卷
- 100MW山地光伏(漁光互補)項目質量驗收范圍劃分表
- 行政管理專科畢業論文-我國基層社會治理存在的問題及對策
- 洗滌機械的裝配與調試技巧考核試卷
- 中考道德與法治一輪專題復習課件專題二十二 世界舞臺上的中國(含答案)
- 傳染病防控與報告課件
- GB/T 10810.1-2025眼鏡鏡片第1部分:單焦和多焦
- 2024-2025學年高中語文選擇性必修下冊 第2單元單元檢測(原卷版)
- 山東省青島市2025年高三年級第一次適應性檢測(青島一模)(3.10-3.12)歷史試題卷
- 裝修工藝流程施工標準
- 2025年亞馬遜FBA物流合同-全球配送網絡合作協議
評論
0/150
提交評論