在vc下,sizeof (int)=4,sizeof(char)=1的,在宣告變數時,是按在記憶體中從高位址分配,遞減變數所佔的位元組數,輸出的位址為其起始位址,既遞減所得位址。陣列從下標高的在記憶體中位址也是高的,char型理應站1個位元組,可是不知道怎麼的,系統分配的卻是4個位元組。檢視變數記憶體位址可以用 printf("%x",&變數名);
下面的**是在vc6.0上編譯的,應該是編譯器的原因,我在dev cpp上編譯char就是佔乙個位元組。
#include
int main()
int i,a[10];
char c,d;
printf("%x/n",&i);
printf("%x/n",&a);
printf("%x/n",&a[0]);
printf("%x/n",&a[9]);
printf("%x/n",&a[10]);
printf("%x/n",&c);
printf("%x/n",&d);
return 0;
結果是:
12ff44
12ff1c
12ff1c
12ff40
12ff44
12ff18
12ff14
press any key to continue
對於char型和int型變數賦值,char擷取int的低位元組。並且char輸出為有符號數。
#include
int main()
int i,j,a[100];
char c;
c=i=258; //100000010b
printf("%d/n",c);//char型擷取低位元組--00000010b
printf("%d/n",i);//int為000000000,00000000,0000001,00000010b
j=0;
while(i!=0)
a[j++]=i%2;
i=i/2;
for(i=j-1;i>=0;--i)//輸出i的二進位制
printf("%d",a[i]);
printf("/n");
return 0;
char型用%u輸出的結果怎麼那麼出乎我意料呢。。。
C語言中的轉義字元
在字符集中,有一類字元具有這樣的特性 當從鍵盤上輸入這個字元時,顯示器上就可以顯示這個字元,即輸入什麼就顯示什麼。這類字元稱為可顯示字元,如a b c 和空格符等都是可顯示字元。另一類字元卻沒有這種特性。它們或者在鍵盤上找不到對應的乙個鍵 當然可以用特殊方式輸入 或者當按鍵以後不能顯示鍵面上的字元。...
C語言中的轉義字元
c語言中的轉義字元 在字符集中,有一類字元具有這樣的特性 當從鍵盤上輸入這個字元時,顯示器上就可以顯示這個字元,即輸入什麼就顯示什麼。這類字元稱為可顯示字元,如a b c 和空格符等都是可顯示字元。另一類字元卻沒有這種特性。它們或者在鍵盤上找不到對應的乙個鍵 當然可以用特殊方式輸入 或者當按鍵以後不...
C語言中的轉義字元
c語言中的轉義字元 在字符集中,有一類字元具有這樣的特性 當從鍵盤上輸入這個字元時,顯示器上就可以顯示這個字元,即輸入什麼就顯示什麼。這類字元稱為可顯示字元,如a b c 和空格符等都是可顯示字元。另一類字元卻沒有這種特性。它們或者在鍵盤上找不到對應的乙個鍵 當然可以用特殊方式輸入 或者當按鍵以後不...