亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++編程中的數據類型和常量學習教程

2020-01-26 14:54:01
字體:
來源:轉載
供稿:網友

C++數據類型
計算機處理的對象是數據,而數據是以某種特定的形式存在的(例如整數、浮點數、字符等形式)。不同的數據之間往往還存在某些聯系(例如由若干個整數組成一個整數數組)。數據結構指的是數據的組織形式。例如,數組就是一種數據結構。不同的計算機語言所允許使用的數據結構是不同的。處理同一類問題,如果數據結構不同,算法也會不同。例如,對10個整數排序和對包含10個元素的整型數組排序的算法是不同的。

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

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

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

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

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

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

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

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

常量的值是不能改變的,一般從其字面形式即可判別是否為常量。常量包括兩大類,即數值型常量(即常數)和字符型常量。如12, 0, -3為整型常量,4.6, -1.23為實型常量,包含在兩個單撇號之間的字符為字符常量,如′a′, ′x′。這種從字面形式即可識別的常量稱為“字面常量”或“直接常量”。


C++常量(C++數值常量、字符串常量、符號常量)
數值常量

數值常量就是通常所說的常數。在C++中,數值常量是區分類型的,從字面形式即可識別其類型。

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

那么,一個整型常量怎樣從字面上區分為以上的類別呢?
一個整數,如果其值在-32768~+32767范圍內,認為它是short int型,它可以賦值給short int型?int型和long int型變量。
一個整數,如果其值超過了上述范圍,而在-2147483648~+2147483647范圍內,則認為它是long int型,可以將它賦值給一個int或long int型變量。
如果某一計算機系統的C++版本(例如Visual C++)確定int與long int型數據在內存中占據的長度相同,則它們能夠表示的數值的范圍相同。因此,一個int型的常量也同時是一個long int型常量,可以賦給int型或long int型變量。
常量無unsigned型。但一個非負值的整數可以賦值給unsigned整型變量,只要它的范圍不超過變量的取值范圍即可。

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

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

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

上面各數據中的0.314159, 3.14159, 31.4159, 314.159 等就是其中的數字部分。可以看到:由于指數部分的存在,使得同一個浮點數可以用不同的指數形式來表示,數字部分中小數點的位置是浮動的。例如:

 a=0.314159e1; a=3.14159e0; a=31.4159e-1; a=314.159e-2;

以上4個賦值語句中,用了不同形式的浮點數,但其作用是相同的。

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

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

對于以指數形式表示的數值常量,也都作為雙精度常量處理。
字符常量

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

2) 轉義字符常量
除了以上形式的字符常量外,C++還允許用一種特殊形式的字符常量,就是以 "/"開頭的字符序列。例如,'/n'代表一個"換行"符。"cout<<'/n'; " 將輸出一個換行,其作用與"cout<<endl; " 相同。這種"控制字符",在屏幕上是不能顯示的。在程序中也無法用一個一般形式的字符表示,只能采用特殊形式來表示。

3) 字符數據在內存中的存儲形式及其使用方法
將一個字符常量存放到內存單元時,實際上并不是把該字符本身放到內存單元中去,而是將該字符相應的ASCII代碼放到存儲單元中。如果字符變量c1的值為'a',c2的值為'b',則在變量中存放的是'a'的ASCII碼97,'b' 的ASCII碼98,如圖2.4(a)所示,實際上在內存中是以二進制形式存放的,

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

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

#include <iostream>using namespace std;int main( ){ int i, j; //i和j是整型變量 i='A'; //將一個字符常量賦給整型變量i j='B'; //將一個字符常量賦給整型變量j cout<<i<<' '<<j<<'/n'; //輸出整型變量i和j的值,'/n' 是換行符 return 0;}

執行時輸出

 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。

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

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

#include <iostream>using namespace std;int main( ){ char c1,c2; c1='a'; c2='b'; c1=c1-32; c2=c2-32; cout<<c1<<' '<<c2<<endl; return 0;}

運行結果為

 A B

'a'的ASCII碼為97,而'A'的ASCII碼為65,'b'為98,'B'為66。從ASCII代碼表中可以看到每一個小寫字母比它相應的大寫字母的ASCII代碼大32。C++符數據與數值直接進行算術運算,'a'-32得到整數65,'b'-32得到整數66。將65和66存放在c1,c2中,由于c1,c2是字符變量,因此用cout輸出c1,c2時,得到字符A和B(A的ASCII碼為65,B的ASCII碼為66)。
字符串常量

用雙撇號括起來的部分就是字符串常量,如"abc","Hello!","a+b","Li ping"都是字符串常量。字符串常量"abc"在內存中占4個字節(而不是3個字節),見圖。

編譯系統會在字符串最后自動加一個'/0'作為字符串結束標志。但'/0'并不是字符串的一部分,它只作為字符串的結束標志。如

  cout<<"abc"<<endl;

輸出3個字符abc,而不包括'/0'。

注意: "a"和'a'代表不同的含義,"a"是字符串常量,'a' 是字符常量。前者占兩個字節,后者占1個字節。請分析下面的程序片段:

 char c; //定義一個字符變量 c='a'; //正確 c="a"; //錯誤,c只能容納一個字符

請思考:字符串常量"abc/n"包含幾個字符?不是5個而是4個字符,其中"/n"是一個轉義字符。但它在內存中占5個字節(包括一個"/0"字符) 。編譯系統遇到"/"時就會把它認作轉義字符的標志,把它和其后的字符一起作為一個轉義字符。

如果"/"后面的字符不能與"/"組成一個合法的轉義字符(如"/c"),則在編譯時顯示出錯信息。如果希望將"/"字符也作為字符串中的一個字符,則應寫為"abc//n",此時字符包括5個字符,即a,b,c,/,n。如果有以下輸出語句:

 cout<<"abc///n"<<endl;

則會輸出:

 abc/ (然后換行)

同理執行

 cout<<"I say /"Thank you!/"/n";

的輸出是:

 I say "Thank you!"

如果在一個字符串中最后一個字符為"/",則表示它是續行符,下一行的字符是該字符串的一部分,且在兩行字符串間無空格。如

 cout<<"We must study C/ //本行最后的"/"后面的空格和換行均不起作用 ++ hard!"; //本行的字符緊連在上一行最后的"/"前面字符之后

則輸出:

 We must study C++ hard!

符號常量

為了編程和閱讀的方便,在C++程序設計中,常用一個符號名代表一個常量,稱為符號常量,即以標識符形式出現的常量。

【例】符號常量的使用。

#include <iostream>using namespace std;#define PRICE 30 //注意這不是語句,末尾不要加分號int main ( ){ int num,total; num=10; total=num * PRICE; cout<<"total="<<total<<endl; return 0;}

程序中用預處理命令#define指定PRICE在本程序單位中代表常量30,此后凡在本程序單位中出現的PRICE都代表30,可以和常量一樣進行運算,程序運行結果為

 total=300

請注意符號常量雖然有名字,但它不是變量。它的值在其作用域(在本例中為主函數)內是不能改變的,也不能被賦值。如用賦值語句"PRICE=40;"給PRICE賦值是錯誤的。 使用符號常量的好處是:含義清楚,在需要改變一個常量時能做到"一改全改"。 如:

 #define PRICE 35

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
一区二区三欧美| 欧美午夜视频在线观看| 91久久国产婷婷一区二区| 亚洲色图五月天| 中文字幕视频一区二区在线有码| 亚洲自拍偷拍视频| 国产99久久精品一区二区 夜夜躁日日躁| 国产一区二区美女视频| 精品国产一区二区三区四区在线观看| 亚洲国产精品美女| 国产原创欧美精品| 色播久久人人爽人人爽人人片视av| 国产精品久久久久久久久男| 国产精品美女午夜av| 国产欧美在线视频| 国产精品视频不卡| 成人精品aaaa网站| 国产精品第100页| 亚洲欧美激情在线视频| 日本午夜精品理论片a级appf发布| 最近2019中文字幕一页二页| 国产偷亚洲偷欧美偷精品| 92国产精品久久久久首页| 国产精品日韩精品| 亚洲午夜av电影| 欧美精品激情在线观看| 4444欧美成人kkkk| 亚洲精品有码在线| 超碰91人人草人人干| 国产精品小说在线| 国产欧美中文字幕| 国产精品一二三在线| 欧美日韩国产一中文字不卡| 日韩在线一区二区三区免费视频| 精品中文字幕在线| 96精品视频在线| 国产97色在线| 国产日韩欧美在线播放| 日韩免费精品视频| 国产亚洲激情视频在线| 日韩一级黄色av| 91精品久久久久久久久久| 欧美精品www在线观看| 日韩国产中文字幕| 中文字幕v亚洲ⅴv天堂| 欧美日韩ab片| 国产精品久久久久久久久久久久久| 国产成人jvid在线播放| 亚洲午夜未满十八勿入免费观看全集| 亚洲free性xxxx护士白浆| 亚洲人成电影在线| y97精品国产97久久久久久| 日本成人激情视频| 国产精品一二区| 国产精品福利在线观看网址| 日韩欧美综合在线视频| 亚洲色图综合网| 成人午夜在线观看| 日韩精品视频在线观看免费| 91性高湖久久久久久久久_久久99| 欧美性猛交xxxx免费看漫画| 国产成人精品午夜| 日韩三级成人av网| 国产区精品在线观看| 欧美性videos高清精品| 成人久久一区二区三区| 欧美视频13p| 国产在线播放91| 国产日产亚洲精品| 亚洲乱码国产乱码精品精天堂| 九九热最新视频//这里只有精品| 亚洲一区二区三区乱码aⅴ| 国产精品成人一区二区| 国产精品高潮在线| 久久精品欧美视频| 久久精品国产欧美激情| 欧美激情中文网| 亚洲精品自拍视频| 亚洲综合精品伊人久久| 国产在线观看精品| 久久久久久久久久久久久久久久久久av| 久久亚洲国产精品成人av秋霞| 一区二区三区www| 日韩电影中文字幕av| 久久久爽爽爽美女图片| 国产精品福利在线观看网址| 欧美成人免费全部观看天天性色| 久久久久久久久爱| 欧美韩日一区二区| 亚洲一区二区三区在线免费观看| 中文字幕日韩有码| 国产精品久久久久999| 国产成人一区二| 国产亚洲成精品久久| 亚洲摸下面视频| 国产精品热视频| 精品无码久久久久久国产| 欧美国产日韩免费| 91av在线不卡| 九九久久综合网站| 国产精品电影在线观看| 国产丝袜精品第一页| 国产精品毛片a∨一区二区三区|国| 日韩视频免费中文字幕| 欧美网站在线观看| 青草成人免费视频| 欧美性开放视频| 亚洲一区二区久久久久久久| 亚洲成人av片在线观看| 45www国产精品网站| 精品视频—区二区三区免费| 欧美高清在线视频观看不卡| 亚洲成色777777女色窝| 欧美在线视频播放| 欧美极品第一页| 成人a在线视频| 欧美一级成年大片在线观看| www.欧美精品一二三区| 精品国产区一区二区三区在线观看| 92看片淫黄大片看国产片| 亚洲一区二区三区视频播放| 亚洲天堂男人天堂女人天堂| 国产在线观看精品一区二区三区| 亚洲欧美成人精品| 97久久超碰福利国产精品…| 亚洲男人的天堂在线| 国产精品美女www爽爽爽视频| 国产精品99久久久久久久久久久久| 亚洲香蕉成视频在线观看| 国产精品久久久久秋霞鲁丝| 国产精品久久久久国产a级| 色综合天天综合网国产成人网| 国产精品羞羞答答| 欧美精品免费播放| 国产精品劲爆视频| 亚洲国产91色在线| 91免费看国产| 亚洲精品动漫100p| 亚洲午夜女主播在线直播| 国产精品久久久久久久午夜| 日韩av手机在线看| 国产一区二区三区在线观看视频| 欧美日韩在线观看视频小说| 亚洲风情亚aⅴ在线发布| 国产精品av网站| 国产亚洲精品久久久久久牛牛| 国产精品国模在线| 成人在线精品视频| 国语对白做受69| 欧美美女操人视频| 久久视频精品在线| 国产精品一区久久久| 午夜免费日韩视频| 一区二区三区国产视频| 日韩在线观看免费全| 热久久视久久精品18亚洲精品| 日韩最新免费不卡| 久热精品视频在线观看一区| 一本色道久久综合狠狠躁篇的优点| 欧美日韩中文字幕| www.亚洲免费视频| 久久国产精品影片| 色99之美女主播在线视频| 最近2019中文字幕在线高清|