还是从一道面试题讲起(最近在准备实习啊,摔)
之所以是可能有俩个答案,是由于一般计算机都是小端,一般IBM的都是大端,不同机器导致不同的存储格式
那么这道题中如果我用数组来存储四字节的a,假设起始地址为0x4000、0x4001、0x4002、0x4003分别对应着数组的从低字节到高字节
(这样说可能不大明白,先看懂这个再继续往下看,现在定义大小为4的字符数组char a[4],那么a[0]是低地址,a[3]是高地址,就是说对于数组来说,索引越大,地址越高)
那么对于这道题来说,0x20150810
这就是内存里的存储形式
好了继续,题目中b和c都是俩个字节,a是四个字节,也就是把a拆成俩个部分分别放置,然后打印输出。
首先低地址字节赋给b,高地址字节赋给c
恩,那么打印输出会怎么输出呢,记住,无论大小端,按照高字节优先输出而不是高地址,于是乎,见上面我写的那张图,结合我下面写的文字理解就能懂了
那么
大端格式下 : b对应着0x2015 c对应着0x0810
小端格式下 : b对应着0x0810 c对应着0x2015
问题分析完毕