多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 互聯網 > C++(一):數據類型

C++(一):數據類型

來源:程序員人生   發布時間:2014-11-13 08:30:32 閱讀次數:7272次
計算機處理的對象是數據,而數據是以某種特定的情勢存在的(例如整數、浮點數、字符等情勢)。不同的數據之間常常還存在某些聯系(例如由若干個整數組成1個整數數組)。數據結構指的是數據的組織情勢。例如,數組就是1種數據結構。不同的計算機語言所允許使用的數據結構是不同的。處理同1類問題,如果數據結構不同,算法也會不同。例如,對10個整數排序和對包括10個元素的整型數組排序的算法是不同的。


圖1.1  C++可使用的數據類型

C++的數據包括常量與變量,常量與變量都具有類型。由以上這些數據類型還可以構成更復雜的數據結構。例如利用指針和結構體類型可以構成表、樹、棧等復雜的數據結構。

表1.1  數值型和字符型數據的字節數和數值范圍

 

C++并沒有統1規定各類數據的精度、數值范圍和在內存中所占的字節數,各C++編譯系統根據自己的情況作出安排。表1.1列出了Visual C++數值型和字符型數據的情況。

幾點說明:
1) 整型數據分為長整型(long int)、1般整型(int)和短整型(short int)。在int前面加long和short分別表示長整型和短整型。

2) 整型數據的存儲方式為按2進制數情勢存儲,例如10進制整數85的2進制情勢為1010101,則在內存中的存儲情勢以下圖所示。

0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1
 
3) 在整型符號int和字符型符號char的前面,可以加修飾符signed(表示“有符號”)或unsigned(表示“無符號”)。如果指定為signed,則數值以補碼情勢寄存,存儲單元中的最高位(bit)用來表示數值的符號。如果指定為unsigned,則數值沒有符號,全部2進制位都用來表示數值本身。例如短整型數據占兩個字節 ,見圖2.2。


圖1.2

有符號時,能存儲的最大值為215⑴,即32767,最小值為⑶2768。無符號時,能存儲的最大值為216⑴,即65535,最小值為0。有些數據是沒有負值的,可使用unsigned,它存儲正數的范圍比用signed時要大1倍。

4) 浮點型(又稱實型)數據分為單精度(float)、雙精度(double)和長雙精度(long double)3種,在Visual C++ 6.0中,對float提供6位有效數字,對double提供15位有效數字,并且float和double的數值范圍不同。對float分配4個字節,對double和long double分配8個字節。


5) 表中類型標識符1欄中,方括號[ ]包括的部份可以省寫,如short和short int等效,unsigned int和unsigned等效。


常量的值是不能改變的,1般從其字面情勢便可辨別是不是為常量。常量包括兩大類,即數值型常量(即常數)和字符型常量。如12, 0, ⑶為整型常量,4.6, ⑴.23為實型常量,包括在兩個單撇號之間的字符為字符常量,如′a′, ′x′。這類從字面情勢便可辨認的常量稱為“字面常量”或“直接常量”。

 

數值常量

數值常量就是通常所說的常數。在C++中,數值常量是辨別類型的,從字面情勢便可辨認其類型。

整型常量(整數)的類型
在上1節中已知道:整型數據可分為int, short int,long int和unsigned int, unsigned short, unsigned long等種別。整型常量也分為以上種別。為何將數值常量辨別為不同的種別呢?由于在進行賦值或函數的參數虛實結合時要求數據類型匹配。

那末,1個整型常量怎樣從字面上辨別為以上的種別呢?
  1. 1個整數,如果其值在⑶2768~+32767范圍內,認為它是short int型,它可以賦值給short int型?int型和long int型變量。
  2. 1個整數,如果其值超過了上述范圍,而在⑵147483648~+2147483647范圍內,則認為它是long int型,可以將它賦值給1個int或long int型變量。
  3. 如果某1計算機系統的C++版本(例如Visual C++)肯定int與long int型數據在內存中占據的長度相同,則它們能夠表示的數值的范圍相同。因此,1個int型的常量也同時是1個long int型常量,可以賦給int型或long int型變量。
  4. 常量無unsigned型。但1個非負值的整數可以賦值給unsigned整型變量,只要它的范圍不超過變量的取值范圍便可。

1個整型常量可以用3種不同的方式表示:
  1. 10進制整數。如1357, ⑷32, 0等。在1個整型常量后面加1個字母l或L,則認為是long int型常量。例如123L, 421L, 0L等,這常常用于函數調用中。如果函數的形參為long int,則要求實參也為long int型,此時用123作實參不行,而要用123L作實參。
  2. 8進制整數。在常數的開頭加1個數字0,就表示這是以8進制數情勢表示的常數。如020表示這是8進制數20,即(20)8,它相當于10進制數16。
  3. 106進制整數。在常數的開頭加1個數字0和1個英文字母X(或x),就表示這是以106進制數情勢表示的常數。如0X20表示這是106進制數20,即(20)16,它相當于10進制數32。
浮點數的表示方法

1個浮點數可以用兩種不同的方式表示:
1) 10進制小數情勢。如21.456, ⑺.98等。它1般由整數部份和小數部份組成,可以省略其中之1(如78.或.06, .0),但不能2者皆省略。C++編譯系統把用這類情勢表示的浮點數1律按雙精度常量處理,在內存中占8個字節。如果在實數的數字以后加字母F或f,表示此數為單精度浮點數,如1234F, ⑷3f,占4個字節。如果加字母L或l,表示此數為長雙精度數(long double),在GCC中占12個字節,在Visual C++ 6.0中占8個字節。

2) 指數情勢(即浮點情勢)。1個浮點數可以寫成指數情勢,如3.14159可以表示為0.314159×101, 3.14159×100, 31.4159×10⑴, 314.159×10⑵等情勢。在程序中應表示為:0.314159e1, 3.14159e0, 31.4159e⑴, 314.159e⑵,用字母e表示其后的數是以10為底的冪,如e12表示1012。其1般情勢為:
    數符  數字部份  指數部份

上面各數據中的0.314159, 3.14159, 31.4159, 314.159 等就是其中的數字部份。可以看到:由于指數部份的存在,使得同1個浮點數可以用不同的指數情勢來表示,數字部份中小數點的位置是浮動的。例如:
    a=0.314159e1;
    a=3.14159e0;
    a=31.4159e⑴;
    a=314.159e⑵;
以上4個賦值語句中,用了不同情勢的浮點數,但其作用是相同的。

在程序中不論把浮點數寫成小數情勢還是指數情勢,在內存中都是以指數情勢(即浮點情勢)存儲的。例如不論在程序中寫成314.159或314.159e0, 31.4159e1, 3.14159e2, 0.314159e3等情勢,在內存中都是以規范化的指數情勢寄存,如圖2.3所示。



圖 1.3
 

數字部份必須小于1,同時,小數點后面第1個數字必須是1個非0數字,例如不能是0.0314159。因此314.159和314.159e0, 31.4159e1, 3.14159e2, 0.314159e3在內存中表示成0.314159×103。存儲單元分為兩部份,1部份用來寄存數字部份,1部份用來寄存指數部份。為便于理解,在圖2.3中是用10進制表示的,實際上在存儲單元中是用2進制數來表示小數部份,用2的冪次來表示指數部份的。

對以指數情勢表示的數值常量,也都作為雙精度常量處理。

字符常量

1) 普通的字符常量
用單撇號括起來的1個字符就是字符型常量。如'a', '#', '%', 'D'都是合法的字符常量,在內存中占1個字節。注意:
  • 字符常量只能包括1個字符,如'AB' 是不合法的。
  • 字符常量辨別大小寫字母,如'A'和'a'是兩個不同的字符常量。
  • 撇號(')是定界符,而不屬于字符常量的1部份。如cout<<'a';輸出的是1個字母"a",而不是3個字符"'a' "。

2) 轉義字符常量
除以上情勢的字符常量外,C++還允許用1種特殊情勢的字符常量,就是以 ""開頭的字符序列。例如,' '代表1個"換行"符。"cout<<' '; " 將輸出1個換行,其作用與"cout<<endl; "="" 相同。這類"控制字符",在屏幕上是不能顯示的。在程序中也沒法用1個1般情勢的字符表示,只能采取特殊情勢來表示。
3) 字符數據在內存中的存儲情勢及其使用方法
將1個字符常量寄存到內存單元時,實際上其實不是把該字符本身放到內存單元中去,而是將該字符相應的ASCII代碼放到存儲單元中。如果字符變量c1的值為'a',c2的值為'b',則在變量中寄存的是'a'的ASCII碼97,'b' 的ASCII碼98,如圖2.4(a)所示,實際上在內存中是以2進制情勢寄存的,如圖2.4(b)所示。


 

圖 1.4

既然字符數據是以ASCII碼存儲的,它的存儲情勢就與整數的存儲情勢類似。這樣,在C++中字符型數據和整型數據之間就能夠通用。1個字符數據可以賦給1個整型變量,反之,1個整型數據也能夠賦給1個字符變量。也能夠對字符數據進行算術運算,此時相當于對它們的ASCII碼進行算術運算。

 

【例1.1】將字符賦給整型變量。

 

#include using namespace std; int main( ) { int i, j; //i和j是整型變量 i='A'; //將1個字符常量賦給整型變量i j='B'; //將1個字符常量賦給整型變量j cout<履行時輸出
   65 66
i和j被指定為整型變量。但在第5和第6行中,將字符'A'和'B'分別賦給i和j,它的作用相當于以下兩個賦值語句:
   i=65;j=66;
由于'A'和'B'的ASCII碼為65和66。在程序的第5和第6行是把65和66直接寄存到i和j的內存單元中。因此輸出65和66。

可以看到:在1定條件下,字符型數據和整型數據是可以通用的。但是應注意字符數據只占1個字節,它只能寄存0~255范圍內的整數。

【例1.2】字符數據與整數進行算術運算。下面程序的作用是將小寫字母轉換為大寫字母。

 

 

#include using namespace std; int main( ) { char c1,c2; c1='a'; c2='b'; c1=c1⑶2; c2=c2⑶2; cout<
運行結果為
   A B
'a'的ASCII碼為97,而'A'的ASCII碼為65,'b'為98,'B'為66。從ASCII代碼表中可以看到每個小寫字母比它相應的大寫字母的ASCII代碼大32。C++符數據與數值直接進行算術運算,'a'⑶2得到整數65,'b'⑶2得到整數66。將65和66寄存在c1,c2中,由于c1,c2是字符變量,因此用cout輸出c1,c2時,得到字符A和B(A的ASCII碼為65,B的ASCII碼為66)。

 

字符串常量

用雙撇號括起來的部份就是字符串常量,如"abc","Hello!","a+b","Li ping"都是字符串常量。
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 亚洲一区二区三区四区 | 亚洲综合在线网 | 亚洲乱码一二三四区 | 久久精品免视看国产明星 | xxx欧美888| 日韩乱码视频 | 国产成人久久精品一区二区三区 | 久草在线观看首页 | 操久| 1000部禁止18观看视频在线看 | 亚洲一区二区综合 | 日本久久久久一级毛片 | 亚洲男女一区二区三区出奶水了 | 精品肉动漫资源在线观看 | 91午夜精品亚洲一区二区三区 | 国产女人在线视频 | 男女视频免费观看 | 手机在线亚洲 | 中文字幕2021 | 亚洲精品在线免费看 | 亚洲图片国产日韩欧美 | 亚洲欧美日韩精品久久亚洲区色播 | 亚洲一区二区三区免费 | 国产精品国产三级国产 | 国产在线视频一区 | 久久精品国产视频在热 | 一级毛片高清大全免费观看 | www插插| 亚洲综合天堂 | 与黑人女人做爰的真实感受 | 成人欧美一区二区三区在线 | 日本免费色视频 | 理论片亚洲 | 国产不卡的一区二区三区四区 | 9久热久爱免费精品视频在线观看 | 一级做a爰片性色毛片黄书 一级做a爰片性色毛片男 | 老司机成人在线观看 | 国产精品久久久久久久久久久威 | 国产欧美一区二区成人影院 | 免费高清毛片在线播放视频 | aa级毛片|