C++从0到1的入门级教学(二)——数据类型
文章目錄
- 2 數據類型
- 2.1 簡單變量
- 2.2 整型
- 2.3 sizeof關鍵字
- 2.4 實型(浮點型)
- 2.5 字符型
- 2.6 轉義字符
- 2.7 布爾類型
- 2.8 數據的輸入
- 2.9 新特性
2 數據類型
2.1 簡單變量
程序通常都需要存儲信息,而當我們把信息存儲在計算機中,程序必須記錄3個基本屬性:
在下面的小節中,我們將會著重談到這些東西。
C++規定在創建一個變量或者常量時,必須要指定相應的數據類型,否則無法給變量分配內存。
那上面這個圖來舉例,我們給利用int指定系統給變量開辟多大的空間,10用來往空間里面存放數據,而a作為變量名用來操縱這個數據,雖然C++沒有告訴你這個值存儲在內存的什么位置,但程序確實記錄了這個位置,如果你想查看這個值所在的內存地址,你只需要用&即可訪問。
由此可知,數據類型存在的意義是給變量分配合適的內存空間。
面向對象編程的本質是設計并擴展自己的數據類型,設計自己的數據類型就是讓類型與數據匹配。如果正確做到了這一點,以后使用自己的數據類型會方便很多。然而,在創建自己的類型之前,必須先了解一些C++內置的基本類型:如整數、浮點數。但是C++提供了多種變體,包括數組、字符串、指針和結構體等。
2.2 整型
作用:整型變量表示的是整數類型的數據
C++中能夠表示整型的類型由以下幾種方式,區別在于所占內存空間不同:
| short(短整型) | 2 | (-2^15 ~ 2^15-1) |
| int(整型) | 4 | (-2^31 ~ 2^31-1) |
| long(長整型) | window為4,linux為4(32位),8(64位) | (-2^31 ~ 2^31-1) |
| long long(長長整型) | 8 | (-2^63 ~ 2^63-1) |
我們需要談談位和字節的知識。
計算機內存由一些叫位的單元組成,C++中的這些整型都通過使用不同數目的位來存儲值。如果我們用位來衡量上面的數據類型,那么:
| short | 至少16位 |
| int | 至少和short一樣長 |
| long | 至少32位 |
| long long | 至少64位 |
前面說到的位(Bit)可以當做電子開關,可以開可以關,關表示0,開表示1;比如8位的內存,1位就能0和1,那么8位就是282^828即256。所以8位的單元可以理解為0 ~ 255或者-128 ~ 127,按剛才的理解的話,每增加一位,組合數翻倍。
字節(byte)通常指的是8位的內存單元。從這個意義來說,字節指的是描述計算機內存量的度量單位,1KB等于1024字節,1MB等于1024KB。
示例:
#include <iostream> using namespace std;int main() {//1、短整型short num1 = 10;cout << sizeof(num1) << endl;//2、整型int num2 = 10;cout << sizeof(num2) << endl;//3、長整型long num3 = 10;cout << sizeof(num3) << endl;//4、長長整型long long num4 = 10;cout << sizeof(num4) << endl;system("pause");return 0; }2.3 sizeof關鍵字
作用:利用sizeof關鍵字可以統計數據類型所占內存大小
語法:sizeof(數據類型/變量)
示例:
#include <iostream> using namespace std;int main() {//1、短整型short num1 = 10;cout << sizeof(num1) << endl;//2、整型int num2 = 10;cout << sizeof(num2) << endl;//3、長整型long num3 = 10;cout << sizeof(num3) << endl;//4、長長整型long long num4 = 10;cout << sizeof(num4) << endl;system("pause");return 0; }2.4 實型(浮點型)
作用:用于表示小數
浮點型變量分為兩種:
-
單精度float
-
雙精度double
兩者的區別在于表示的有效數字范圍不同。
| float | 4 | 7位有效數字 |
| double | 8 | 15-16位有效數字 |
實例:
#include <iostream> using namespace std;int main() {//1、單精度 float//2、雙精度 doublefloat f1 = 3.14f;cout << "f1 = " << f1 << endl;double d1 = 3.14;cout << "d1 = " << d1 << endl;cout << "float sizeof = " << sizeof(f1) << endl;cout << "double sizeof = " << sizeof(d1) << endl;//科學計數法float f2 = 3e2;//3*10^2cout << "f2 = " << f2 << endl;float f3 = 3e-2;//3*0.1^2cout << "f3 = " << f3 << endl;system("pause");return 0; }2.5 字符型
作用:字符型變量用于顯示單個字符
語法:char ch = 'a'
【注1:在顯示字符型變量時,用單引號將字符括起來,不要用雙引號】
【注2:單引號內只能有一個字符,不可以是字符串】
- C和C++中字符型變量只占用一個字節
- 字符型變量并不是把字符本身放到內存中存儲,而是將對應的ASCII編碼放入存儲單元。
拓展:
實際上,在美國最常用的符號集是ASCII字符集,但是C++實現使用的是其主機系統的編碼,例如IBM大型機使用EBCDIC編碼。
實例:
#include <iostream> using namespace std;int main() {//1、字符型變量創建方式char ch = 'a';cout << ch << endl;//2、字符型變量所占內存大小cout << "char ch sizeof = " << sizeof(ch) << endl;//3、字符型變量常見錯誤//char ch2 = "b";//創建字符型變量的時候,要用單引號//char ch2 = 'abcdef'; //創建字符型變量的時候,單引號內只能有一個字符//4、字符型變量對應ASCll編碼//a - 97cout << (int)ch << endl;system("pause");return 0; }2.6 轉義字符
作用:用于表示一些不能顯示出來的ASCII的字符
2.7 布爾類型
作用:布爾數據類型代表真或假的值
bool類型只有兩種值:
- true:真(本質是1)
- false:假(本質是0)
bool類型占一個字節大小
示例:
#include <iostream> using namespace std;int main() {//1、創建bool數據類型bool flag = true;//true代表真cout << flag << endl;flag = false;//false代表假cout << flag << endl;//本質上1代表真,0代表假cout << "size of bool = " << sizeof(bool) << endl;system("pause");return 0; }2.8 數據的輸入
作用:用于從鍵盤獲取數據
關鍵字:cin
語法:cin>>變量
示例:
#include <iostream> #include <string> using namespace std; int main() {//1、整型int a = 0;cout << "請給整型變量a賦值:" << endl;cin >> a;cout << "整型變量a = " << a << endl;//2、浮點型float f = 3.14f;cout << "請給浮點型變量賦值:" << endl;cin >> f;cout << "浮點型變量f = " << f << endl;//3、字符型char ch = 'a';cout << "請給字符型變量ch賦值:" << endl;cin >> ch;cout << "字符型變量f = " << ch << endl;//4、字符串型string str = "hello world";cout << "請給字符串str賦值:" << endl;cin >> str;cout << "字符串str" << str << endl;//5、布爾類型bool flag = false;cout << "請給布爾類型flag賦值" << flag << endl;cin >> flag;cout << "布爾類型flag = " << flag << endl;//只要非零的數都是真system("pause");return 0; }2.9 新特性
初始化
在以前學過的任何編程語言中,我們初始化一個變量都是采用如下方式:
int a = 10;但是在C++11中,我們有另外一種初始化方式,這種方式多用于數組或結構體,但是在C++98中,也可用于單值變量,如下:
int a = {10};將大括號初始化器用于單值變量的情況不多,但是C++11標準使得這種情況變多了。首先如果采用上面的方式初始化的話,我們可以不使用等號:
int a{10};其次,大括號內甚至可以不放東西,這樣會初始化為0。
總結
以上是生活随笔為你收集整理的C++从0到1的入门级教学(二)——数据类型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 冒名者还是重名?疑惑中!
- 下一篇: Exchange server 2007