国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C/C++ - C++編程中的數據類型和常量學習教程

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

2021-03-11 15:10C++教程網 C/C++

這篇文章主要介紹了C++編程中的數據類型和常量學習教程,是C++入門學習中的基礎知識,需要的朋友可以參考下

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

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

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

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

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

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

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

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

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

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

有符號時,能存儲的最大值為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 等就是其中的數字部分。可以看到:由于指數部分的存在,使得同一個浮點數可以用不同的指數形式來表示,數字部分中小數點的位置是浮動的。例如:

?
1
2
3
4
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等形式,在內存中都是以規范化的指數形式存放,

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

數字部分必須小于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)所示,實際上在內存中是以二進制形式存放的,

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

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

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

?
1
2
3
4
5
6
7
8
9
10
#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;
}

執行時輸出

?
1
65 66

i和j被指定為整型變量。但在第5和第6行中,將字符'A'和'B'分別賦給i和j,它的作用相當于以下兩個賦值語句:

?
1
i=65;j=66;

因為'A'和'B'的ASCII碼為65和66。在程序的第5和第6行是把65和66直接存放到i和j的內存單元中。因此輸出65和66。

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
#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;
}

運行結果為

?
1
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個字節),見圖。

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

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

?
1
cout<<"abc"<<endl;

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

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

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

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

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

?
1
cout<<"abc\\\n"<<endl;

則會輸出:

?
1
abc\ (然后換行)

同理執行

?
1
cout<<"I say \"Thank you!\"\n";

的輸出是:

?
1
I say "Thank you!"

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

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

則輸出:

?
1
We must study C++ hard!

符號常量

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

【例】符號常量的使用。

?
1
2
3
4
5
6
7
8
9
10
11
#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,可以和常量一樣進行運算,程序運行結果為

?
1
total=300

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

?
1
#define PRICE 35

延伸 · 閱讀

精彩推薦
  • C/C++C/C++經典實例之模擬計算器示例代碼

    C/C++經典實例之模擬計算器示例代碼

    最近在看到的一個需求,本以為比較簡單,但花了不少時間,所以下面這篇文章主要給大家介紹了關于C/C++經典實例之模擬計算器的相關資料,文中通過示...

    jia150610152021-06-07
  • C/C++C++之重載 重定義與重寫用法詳解

    C++之重載 重定義與重寫用法詳解

    這篇文章主要介紹了C++之重載 重定義與重寫用法詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下...

    青山的青6062022-01-04
  • C/C++詳解c語言中的 strcpy和strncpy字符串函數使用

    詳解c語言中的 strcpy和strncpy字符串函數使用

    strcpy 和strcnpy函數是字符串復制函數。接下來通過本文給大家介紹c語言中的strcpy和strncpy字符串函數使用,感興趣的朋友跟隨小編要求看看吧...

    spring-go5642021-07-02
  • C/C++c++ 單線程實現同時監聽多個端口

    c++ 單線程實現同時監聽多個端口

    這篇文章主要介紹了c++ 單線程實現同時監聽多個端口的方法,幫助大家更好的理解和學習使用c++,感興趣的朋友可以了解下...

    源之緣11542021-10-27
  • C/C++C語言實現電腦關機程序

    C語言實現電腦關機程序

    這篇文章主要為大家詳細介紹了C語言實現電腦關機程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    xiaocaidayong8482021-08-20
  • C/C++學習C++編程的必備軟件

    學習C++編程的必備軟件

    本文給大家分享的是作者在學習使用C++進行編程的時候所用到的一些常用的軟件,這里推薦給大家...

    謝恩銘10102021-05-08
  • C/C++深入理解goto語句的替代實現方式分析

    深入理解goto語句的替代實現方式分析

    本篇文章是對goto語句的替代實現方式進行了詳細的分析介紹,需要的朋友參考下...

    C語言教程網7342020-12-03
  • C/C++C語言中炫酷的文件操作實例詳解

    C語言中炫酷的文件操作實例詳解

    內存中的數據都是暫時的,當程序結束時,它們都將丟失,為了永久性的保存大量的數據,C語言提供了對文件的操作,這篇文章主要給大家介紹了關于C語言中文件...

    針眼_6702022-01-24
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 久久99精品久久久久久琪琪 | 日韩精品免费在线视频 | 日本一区二区在线播放 | 欧美二三区 | 久久99久久99精品免观看粉嫩 | 国产精品久久久久久亚洲调教 | 色综合天天综合网国产成人网 | 91成人精品 | 日韩欧美视频免费 | 天堂av一区二区 | 欧美性猛片 | 亚洲 中文 欧美 日韩 在线观看 | 久久中文字幕一区 | 亚洲国产日韩一区 | 日韩男女视频 | 最新国产在线 | 91视频免费看| 欧美亚洲国产一区二区三区 | 日韩电影在线看 | 亚洲人人看 | 三区在线| 色综合成人 | 男女免费观看在线爽爽爽视频 | www日本视频| 午夜精品网站 | 欧美天堂 | jizz亚洲女人高潮大叫 | 欧美日韩精品一区二区在线播放 | 欧美日韩久久久 | 成版人性视频 | 黄色影视在线免费观看 | 国产在线拍揄自揄拍视频 | 亚洲专区欧美 | 久久午夜精品 | 综合亚洲精品 | 亚洲 精品 综合 精品 自拍 | 最近中文字幕mv免费高清在线 | 淫片在线 | 国产欧美综合一区二区三区 | 中文字幕亚洲一区二区三区 | 成人片免费看 |