2014-10-08 113 views
-4
int main(){ 
    int a = 330; 
    char *p; 
    p = (char *) &a; 
    printf("%d",*p); 
    return 0; 
} 

這是怎麼回事74? Plz解釋?代碼示例的輸出

http://codepad.org/TVeJhU1w

+0

爲什麼你認爲它不會是74?你瞭解代碼嗎?如果不是,你讀過一本書或教程解釋它?如果不是,爲什麼不呢? – nvoigt 2014-10-08 06:44:27

+0

那你以爲是什麼時候呢? – 2014-10-08 06:45:28

+0

[這個鏈接會給你答案的答案](http://www.c4learn.com/c-programming/pointer-arithmatics-pre-requisites/) – 2014-10-08 06:45:30

回答

2

如果整數爲4個字節,有4層字符的在它。試着去了解這段代碼的輸出:

int main() { 
    int a =330, i; 
    char *p; 

    printf("%08x\n", a); 
    p=(char *)&a; 
    for (i = 0; i < sizeof(int); i++) { 
     printf("%02x ", p[i]); 
    } 
    printf("\n"); 
    for (i = 0; i < sizeof(int); i++) { 
     printf("%02d ", p[i]); 
    } 
    printf("\n"); 
    return 0; 
} 

打印:

0000014a 
4a 01 00 00 
74 01 00 00 
+2

現在繼續解釋小端和大端;-))。 – 2014-10-08 06:50:15

0

在這裏,您使用的是字符指針指向一個整型變量。 由於字符只是一個字節,你會得到74。 如果你用了一個整數指針,那麼你就已經得到330

330 in binary is : 0000 0001 0100 1010 

你在這裏看到的值

74 : 0100 1010(1byte)