C/C++變數在記憶體中的儲存

來源:互聯網
上載者:User

在C++語言中,有如下代碼:

char a;
int b;
int c;
a='1';
b=1;
printf("a = %x \r\n",a);
printf("b = %x\r\n",b);
c=a;
printf("c = %x\r\n",c);

輸出的結果是

a = 31
b = 1
c = 31

請按任意鍵繼續. . .

這裡 int型是4Byte char型是1Byet。

a=‘1’ 這條語句執行後,會在記憶體中分配1個位元組大小的記憶體空間,在這個 空間裡儲存的內容是0x 31,即字元1的ASC碼的16進位表示。

b=1 這條語句執行後會在記憶體中分配一個4個位元組大小的空間,在這個空間記憶體儲的內容 是0x 00000001。

c= a ; a的長度小於c的長度因此賦值不會產生資料的丟失。

看如下代碼:

char a;
int b;
a=49;
b=49;
printf("a = %x \r\n",a);
printf("b = %x \r\n",b);

輸出結果是:

a = 31

b = 31

請按任意鍵繼續. . .

這裡 a =49; 49 c++編譯器預設為10進位,49的16進位表示為 0x31 那麼在a所在的記憶體 中存放的依然是0x 31。

同理b在記憶體中存放的也是0x31。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.