Lesson 2 基本資料型別

2021-07-14 08:26:42 字數 1889 閱讀 7807

在學習資料型別之前,需要了解乙個基礎知識,計算機的記憶體由位(bit)組成,每一位都表示乙個二進位制數0或1。在儲存單位中,1gb = 2^10mb = 2^20kb = 2^30byte = 2^33bit。

一、資料的分類、大小和初始化

1、字元型:char

2、布林型:bool

3、整形:有short,int,long,long long四種

4、浮點型:float,double,long double三種

對於每種型別所佔的位元組數是和作業系統的位數直接聯絡的,不同位數的作業系統對應的位元組數是不同的。我是64位的作業系統,利用sizeof()函式,引數直接選擇資料的型別,輸出了所有資料型別所佔的位元組數大小。

4、取值範圍

如果該型別的資料占有n個位元組,那麼就有m個位,其中m = 4 x n:

對於有符號數(signed),最高位為符號位,1表示負數,0表示正數。取值範圍為 -2^(m-1) ~ 2^(m-1) - 1。

對於無符號數(unsigned),取值範圍為 0 ~ 2^m - 1。

5、初始化

c語言初始化可以直接用「=」給變數賦值,在c++中新增了用括號初始化,形式上有點像初始化列表,例如:

int num1(100);

int num2;

int num3{};

如果花括號中沒有值,那麼預設初始化為0。

如果變數沒有初始化,那麼會cpu會給該變數分配乙個隨機值,範圍在該型別資料的取值範圍內。

如果取值超過了該資料型別的取值範圍,那麼就會返回乙個邊界值。

二、#define和const

1、例如 #define max 10

和#include一樣,是乙個預處理器編譯指令。該編譯指令告訴預處理器,在程式中來查詢max,並且將所有的max都替換為10,修改後的程式將在這些變數的值替換後被編譯。

2、例如 const int max = 10

const限定符,乙個const常量的值是不允許被修改的,宣告const變數時可以將變數名開頭字母大寫,或者將整體大寫,以表示這是乙個常量。

總體來說,使用const限定符比使用#define指令要更好,一方面指出了資料的型別,另一方面是在作用域規則和複雜型別中有更多的好處,這個會在之後介紹。

三、char 和bool

1、char字元其實也就是和asc碼相對應,計算機只能識別二進位制數而不能識別符號。比如輸入乙個字元 』a『,在通過cin輸入時,就被轉化為了65,計算機就是依次來儲存a,輸出時,通過cout識別該變數為char型別,那麼就將65轉化為a來輸出。同時字元之間也是可以比較大小,可以直接將字元當做對應的數字來用。

2、bool型別取值為true和false,也就是對應為1和0。這裡有乙個容易想當然的地方,給乙個bool變數用數字賦值時,如果賦為0的話,則該變數為false,如果是非0的話,則該變數為true,而不是用是否小於0來區分。

四、型別轉換

在型別轉換中有個原則就是:低一級數一定可以轉換為高一級數,而高一級數不一定能轉換成低一級數(有可能會造成精度丟失)。

轉換的方法有很多,比如用花括號來表示乙個非該變數型別的值,在這裡我只記一下強制轉換:

(typename) value

typename (value)

這兩句的意義一樣都是把value值轉換為typename型別。

另外,c語言中有乙個關鍵字auto,用於定義乙個變數,而用auto來替代該變數的變數型別,那麼編譯器會根據初始值的型別來推斷變數的型別。但是,這種做法會導致誤會,例如如果想申明乙個double變數,然而初始值是0的話,那麼會編譯器會將其自動識別為int整型,而不是double,需要初始為0.0才是正確的做法。

Lesson 3 基本資料型別

函式的2個要素 命名 式 駝峰命名法 下劃線命名法 注意 是兩個物件相等和兩個物件是同 個物件是兩個概念 第四種格式化字串 字串 寫 a 123456789 b a 1 左閉右開型 開始位置 結束位置 步長 1.a,b 6,8 我想讓a 8 b 6我該怎麼辦?用2種方式實現 第一種 a,b 6,8a...

Lesson2標準庫型別

一 string 型別 string物件的定義和初始化 string s1 string s2 s1 string s3 value string s4 n,c 二 標準vector型別 1.vector不是一種資料型別,而只是乙個類模板。可以用來定義任意多種資料型別 vector和 vector才...

python基本資料型別(2)

字串 str 7 format 和format map 兩個都是格式化,講乙個字串中的佔位符替換為指定的值。format map 的書寫格式必須是字典型別。8 isalnum self,args,kwargs 判斷該字串是否包含數字和字母 可全部為數字,也可全部是字母 返回值是true和false。...