




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
計算機處理的對象是數據,而數據是以某種特定的形式存在的。2.1C++的數據類型姓名:曼迪年齡:10歲身高:123.4CM文本整數帶有小數3直徑:24.6CM直徑:12742.02KM不同的數據采用不同類型的存儲方式::一個二進制位(bit)存儲陣列數據的存儲方式::8位一個字節(byte)存儲陣列數據的存儲方式::16位一個字(word)存儲陣列數據的存儲方式::32位一個字(word)存儲陣列數據的存儲方式C++中使用的數據類型基本類型整型、字符型、浮點型(實型)、布爾型、空類型構造類型枚舉類型、數組類型、結構體類型、共用體類型、類類型指針類型數據類型是所有程序的基礎數據類型可以告訴我們:
計算機為數據提供了多大的存儲空間
數據代表什么意思
可以對數據執行哪些操作一、整型類型類型標識符字節數值范圍備注短整型short[int]2-32768~32767-215~215-1無符號短整型unsignedshort[int]20~655350~216-1整型[signed]int4-2147483648~2147483647-231~231-1無符號整型unsigned[int]40~42949672950~232-1長整型long[int]4-2147483648~2147483647-231~231-1無符號長整型unsignedlong[int]40~42949672950~232-1inta=23;shortintb=45;131、整型數據的表示方法十進制(Decimal)八進制(Octal)十六進制(Hexadecimal)inta=21;inta=021;inta=0x21;輸出:21輸出:17輸出:33整型數據按二進制數形式存儲在內存中的存儲形式(2個字節)1、整型數據的存儲方式十進制50110010二進制0000000000110010高地址字節低地址字節152、有符號數與無符號數無符號數沒有符號位,只能表示非負數無符號數類型必須指定為unsigned16有符號數二進制補碼表示,首位為符號位指定signed或缺省情況,即為有符號數(1)補碼的概念
正數:與原碼一致,首位為0
負數:絕對值取反加1,首位為1
零:各位全為0(2)補碼舉例0000000000110010111111111100110150的原碼-50的補碼取反加1
1111111111001110shortinti=-50;//占2字節若把負數賦值給無符號數,會出現什么情況?(3)有符號數與無符號數舉例intmain(){shortintx=-50;unsignedshortinty;y=x;cout<<“x="<<x<<endl;cout<<“y="<<y<<endl;}1111111111001110-50的補碼xy=x;y65486的原碼1111111111001110若把負數賦值給無符號數,則把該負數的補碼當作無符號數進行處理。3、整型數據的溢出(Overflow)
數據超出了變量能夠存儲的范圍,造成數據丟失或數值改變等。intmain(){shortinta=32767;a=a+1;cout<<"a="<<a<<endl;}0111111111111111+132767的原碼1000000000000000整數的環繞特性
一個正數大到了極點就會變成負數;一個負數小到了極點就會變成正數。-32768的補碼1、浮點型的表示方法2.2浮點型31.4159a=0.314159e2a=3.14159e1a=31.4159e0a=314.159e-1規范化指數形式以10為底floata=31.4159;floata=3.14159e1;
在程序中不論把浮點數寫成小數形式還是指數形式,在內存中都是以指數形式(即浮點形式)存儲的。類型類型標識符字節絕對值范圍單精度型float43.4×10-38~3.4×1038雙精度型double81.7×10-308~1.7×10308長雙精度型longdouble81.7×10-308~1.7×103086位有效數字15位有效數字27313029282726252423222120191817161514131211109876543210
指數位尾數位符號位1、浮點數的存儲方式ABCD內存中逆序存儲:DCBA浮點數123456.0f的轉換過程123456.011110001001000000.01.11100010010000000轉化為二進制小數點左移16位1.11100010010000000*(2^16)刪除最高位的111100010010000000后面用0補夠23位11100010010000000000000指數位共8位,可以表示范圍是0~255的無符號整數,也可以表示-128~127的有符號整數。但因為指數是可以為負的,所以為了統一把十進制的整數化為二進制時,都先加上127。16+127=143二進制表示為:10001111符號位(整數):0010001111111000100100000000000003130292827262524232221201918171615141312111098765432100100011
1
1
1
1
1
0
0
0
1
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
指數位尾數位符號位01000111111100010010000000000000轉化為16進制:47F12000高低位顛倒:0020F147內存中應顯示:00315447練習54321.02、浮點型數據的舍入誤差由于浮點型變量能夠表示的有效數字有限,將有效位以外的數字舍去造成誤差。intmain(){floata=123.456741e5;cout<<a<<endl;return0;}浮點數123.456f的轉換過程整數部轉化為二進制11110110.456轉化為二進制十進制小數轉化為二進制數方法
乘以2直到沒有了小數為止(取整數部分為二進制位)。0.456*2=0.9120.912*2=1.8240.824*2=1.6480.648*2=1.2960.296*2=0.5920.592*2=1.1840.184*2=0.3680.368*2=0.7360.736*2=1.4720.472*2=0.944…取整數部分0111010010…即使超過尾數的最大長度23位也仍有小數!這就是著名的浮點數精度問題。1111011.01110100101111001加上前面的整數部算夠24位即可小數點左移6位1.111011011101001011110011.11101101110100101111001*(2^6)刪除最高位的111101101110100101111001010000101111011011101001011110016+127=133二進制表示為:10000101
符號位(整數):0轉化為16進制:42F6E979高低位顛倒:79E9F642四、字符型charch='A';
只能包括一個字符單引號(′)是定界符占一個字節1、字符型數據在內存中的存儲形式存放該字符相應的ASCII代碼01000001'A'字符型數據和整型數據可以通用40intmain(){ inti,j; charc1; i='A'+5; j='B'; c1=65+5; cout<<"i="<<i<<''<<"j="<<j<<'\n'; cout<<"c1="<<c1<<endl; return0;}注意:字符型數據只能存放0~255范圍內的整數。41將小寫字母轉換為大寫字母。intmain(){ charc1,c2; c1='a'; c2='b'; c1=c1-32; c2=c2-32; cout<<c1<<''<<c2<<endl; return0;}
有些ASCII的字符代表某些操作,不能打印出來,如回車、換行等,可用兩種方式表示這些字符。
1)用ASCII碼的形式
charre=13;
2)用轉義字符
charre=
′\n′;2、轉義字符43轉義字符
意義ASCII碼值(十進制)\a響鈴(BEL)007\b退格(BS)008\f換頁(FF)012\n換行(LF)010\r回車(CR)013\t水平制表(HT)009\v垂直制表(VT)011\\反斜杠092\?問號字符063\'單引號字符039\"雙引號字符034\0空字符(NULL)000\ddd1到3位8進制數所代表的字符\xhh1到2位16進制數所代表的字符可以利用以下代碼顯示擴展ASCII碼:system("chcp437");利用以下代碼轉回中文顯示:system("chcp936");45
編譯系統在見到字符“\”時,會接著找它后面的字符,把它處理成一個字符,在內存中只占一個字節。
intmain(){ inta=1; cout<<a<<""<<a<<endl; cout<<a<<"\t"<<a<<endl; return0;}intmain(){ cout<<"c:\tc\tc"<<endl; return0;}intmain(){ cout<<"c:\\tc\\tc"<<endl; return0;}五、變量的定義在程序運行期間其值可以改變的量稱為變量。inta;floatb;doublec;chard;變量類型變量名變量有一個名字,即標識符變量在內存中占據一定的存儲單元變量占據存儲空間的大小由其類型決定程序使用變量名表示這個變量所占據的存儲單元里存儲的數據的值變量要“先定義,后使用”481、變量的命名規則
只能由字母、數字、下劃線(‘_’)組成;第一個字符必須為字母或下劃線;
C++語言標識符是大小寫敏感的;不要與關鍵字、系統函數名和類名重復。合法的變量名:
sum,average,total,day,month,Student_name,tan,BASIC,li_ling不合法的標識符和變量名:
M.D.John,$123,#33,3G64,Lingli,C++,Zhang-ling,U.S.A.50asmautobreakcasecatchcharclassconstcontinuedefaultdeletedodoubleelseenumexternfloatforfriendgotoifinlineintlongnewoperatoroverloadprivateprotectedpublicregisterreturnshortsignedsizeofstaticstructswitchthistemplatethrowtrytypedefunionunsignedvirtualvoidvolatilewhileC++常用的關鍵字:
標識符應當直觀且可以拼讀,可望文知意,不必進行“解碼”。標識符最好采用英文單詞或其組合,便于記憶和閱讀。切忌使用漢語拼音來命名。程序中的英文單詞用詞應當準確。
例如:不要把CurrentValue寫成NowValue。
單字符的名字也是有用的,常見的如i,j,k,m,n,x,y,z等,它們通常可用作函數內的局部變量。
標識符的長度應當符合“min-length&&max-information”原則。maxvalmaxValueUntilOverflow
例如Windows應用程序的標識符通常采用“大小寫”混排的方式,如AddChild。而Unix應用程序的標識符通常采用“小寫加下劃線”的方式,如add_child。別把這兩類風格混在一起用。
命名規則盡量與所采用的操作系統或開發工具的風格保持一致。例如:intx,X; //變量x與X容易混淆voidfoo(intx); //函數foo與FOO容易混淆voidFOO(floatx);
程序中不要出現僅靠大小寫區分的相似的標識符。例如:floatvalue;floatoldValue;floatnewValue;
變量的名字應當使用“名詞”或者“形容詞+名詞”。如Value1,Value2等,除非邏輯上的確需要編號。
用正確的反義詞組命名具有互斥意義的變量或相反動作的函數等。例如:int minValue;int maxValue;int SetValue(…);int GetValue(…);
盡量避免名字中出現數字編號。2、為變量賦初值可以在定義變量時指定它的初值。floata=3.14;floatb=3.14*2.3*2.3;也可以是表達式floata;a=3.14;常規方式變量未賦初值即使用,會有什么后果?intmain(){inta;cout<<"a="<<a<<endl;return0;}各次運行情況可能不同原因是什么?59若變量未賦初值即使用,則該變量的初值是一個不可預測的值。3、訪問變量
內存單元由操作系統按字節編號,稱為地址。對象在內存中第一個字節的地址稱為對象的地址。0X0066FDF40X0066FDEC變量a的地址變量b的地址inta;doubleb;由類型符double解釋存儲數據由類型符int解釋存儲數據取對象b的地址: &b取址運算符六、符號常量和常變量符號常量是以標識符形式出現的常量。#include<iostream>usingnamespacestd;#definePRICE30intmain(){ intnum,total; num=10; total=num*PRICE; cout<<"total="<<total<<endl; return0;}不加分號constinta=3;常變量表示程序運行期間值不能改變的變量。常變量不能被賦值。constinta;a=3;定義常變量時必須同時對它初始化。又稱只讀變量65符號常量和常變量的區別
符號常量用一個符號代替一個字符串,在預編譯時把所有符號常量替換為所指定的字符串,它沒有類型,在內存中并不存在以符號常量命名的存儲單元。常變量具有變量的特征,它具有類型,在內存中存在著以它命名的存儲單元。與一般變量惟一的不同是指定變量的值不能改變。
為什么要使用常量?不使用常量所引起的麻煩:(1)程序的可讀性(可理解性)變差。程序員自己會忘記那些數字或字符串是什么意思,用戶則更加不知它們從何處來、表示什么。(2)在程序的很多地方輸入同樣的數字或字符串,難保不發生書寫錯誤。(3)如果要修改數字或字符串,則會在很多地方改動,既麻煩又容易出錯。67盡量使用含義直觀的常量來表示程序中多次出現的數字或字符串。七、C++的運算符算術運算符+-*/%++--關系運算符><==>=<=!=邏輯運算符!&&||位運算符<<>>~|^&
賦值運算符=及擴展的復合運算符條件運算符?:逗號運算符,指針運算符*&求字節運算符sizeof強制類型轉換符(type)分量運算符.->下標運算符[]其他()newdelete691、基本的算術運算符運算符名稱舉例說明+正值運算符(正號)+b值不變-負值運算符(負號)-d取相反數+加法運算符a+3加法-減法運算符c-4減法*乘法運算符a*3乘法/除法運算符c/d除法%模運算符e%4求余數、取模702、
算術表達式
用算術運算符和括號將運算對象連接起來的、符合C++語法規則的式子,稱C++算術表達式。運算對象包括常量、變量、函數等。a*b/c-1.5+'a'71C++語言規定了運算符的優先級和結合性。圓括號()具有最高的優先級72直接舍去商的小數部分采取“向零取整”兩個整數相除,結果也為整數注意%運算符的兩個操作數都必須是整數模運算有什么作用?分解數字733
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 華西醫院護理面試能力評估體系
- 酒店股東避稅協議書
- 朗誦的技巧培訓
- 許昌婚前財產協議書
- 健身房轉讓合同協議書
- 車間大棚租賃協議書
- 餐廳卡座轉讓協議書
- 銷售維護價格協議書
- 轎車私人轉讓協議書
- 飯店轉讓商鋪協議書
- 地坪漆售后服務措施
- 2025年九省聯考新高考 英語試卷(含答案解析)
- 鹽堿地質量等級評價技術規程
- 農民合作社資產負債表、盈余及盈余分配表、成員權益表
- 2024-2025學年福建省莆田市初三下學期二測模擬一語文試題含解析
- 2022國家電網企業文化、電力與能源戰略題庫(答案)
- 完整的策劃書模板
- 土木工程材料期末考試試題庫
- 模擬電子技術基礎智慧樹知到期末考試答案章節答案2024年北京航空航天大學
- 旅游定制師培訓課件
- 中國青光眼指南
評論
0/150
提交評論