程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C/C++變量在內存中的存儲

C/C++變量在內存中的存儲

編輯:關於C++

在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。

看下面的代碼:

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

輸出的內容是:

a = 31

b = 1

請按任意鍵繼續. . .

這裡b輸出的是1,因為b是按照字符型來輸出的。

通過以上3個例子要說明的是,要看淡變量類型,不要被過多的變量類型搞的暈頭轉向, 看問題要看本質。不同的變量類型反映在內存中,其實只是開辟的內存大小有區別甚至內存 大小都一樣,關鍵還是要看內存空間存儲的二進制碼是什麼。兩個變量只要是在內存中存儲 的二進制碼一樣 無論這兩個變量是什麼類型,我們都可以認為他們是相等的。

看如下代碼:

char a;
int b;
float c;
a=49;
b=49;
c=49;
if(a==b)
{
printf("a和b在內存中的值一致\n");
}
if(a==c)
{
printf("a和c在內存中的值一致\n");
}
if(b==c)
{
printf("b和c在內存中的值一致\n");
}
printf("a = %x \r\n",a);
printf("b = %x \r\n",b);
printf("c = %f \r\n",c);

輸出結果如下:

a和b在內存中的值一致
a和c在內存中的值一致
b和c在內存中的值一致
a = 31
b = 31
c = 49.000000
請按任意鍵繼續. .

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved