天天看點

c++中int,和char的差別和特性。c++中int,和char的差別和特性

c++中int,和char的差別和特性

雖然談不上十分難懂或者十分重要,但是希望大家可以全面了解一下關于int 和char。

1.int類型和char類型的差別

比較下面三個定義式的差別:

int i = 1;
char i = 1;
char i = '1';
           
  • int用來定義整型變量,char用來定義字元型變量,要清楚的知道三個定義式的差別,可以比較它們在記憶體中的存儲形式。

資料在記憶體中是以二進制形式存放的,而且是以補碼表示的。

1、一個正整數的補碼和該數的原碼(即該數的二進制形式)相同;

2、如果數值是負的,求補碼的方法是:将該數的絕對值的二進制形式,按位取反再加1。這裡不對補碼的知識做過多的讨論了。

在讨論字元型資料以前,首先要明确一個“編碼”的概念,即約定一套規則,将a、b、#等符号用二進制的形式表示出來,然後大家都遵守這個規則。美國資訊交換标準碼(ASCII)就是基于這樣的目的産生的。那麼我們現在來看下面兩個定義式:

char i = 1;
char i = '1';
           

将一個整型常量放到一個字元變量中,實際就是把以該整型常量表示的ASCII碼放到記憶體單元中。(ASCII碼是以十進制整數表示的)

将一個字元常量放到一個字元變量中,實際上并不是把該字元本身放到記憶體單元中去,而是把該字元的相應ASCII代碼放到存儲單元中。

char i = 1;則i的ASCII就是1,在記憶體中就是0 0 0 0 0 0 0 1
char i = ‘1’;則i的ASCII就是字元‘1’的ASCII碼49,就是0 0 1 1 0 0 0 1
           

上面是int和char的差別,它們的聯系就是存儲形式類似,就是一個是1個位元組,一個是2個位元組。int 可以用字元常量指派,char也可以用整型常量指派,它們之間的橋梁就是ASCII碼,因為字元是與ASCII一一對應的。