C代码打印十六进制值但非常不同

时间:2013-03-19 18:40:21

标签: c printing

int main() {
        int i;
        int four_ints[4];
        char* c;

        for(i=0; i<4; i++) four_ints[i] = 18;

        c = (char*)four_ints;
        for(i=0; i<4; i++) c[i] = 24;

        printf("%x\n", four_ints[2]);
    }

因此,如果我这样打印,它只会打印12。

但是如果我将其更改为printf("%x\n", four_ints[11])

突然打印28ac90

为什么会这样做?

1 个答案:

答案 0 :(得分:3)

在第二个语句printf("%x\n", four_ints[11])中,您访问未为您的程序保留的数组位置(int four_ints[4])。那就是你无法保证存储在非保留的内存部分。