国际空间研究组织 | ISRO CS 2016 |问题 22
下面的程序会输出什么?假设您在 little-endian 处理器中运行该程序。
#include
int main() {
short a = 320;
char * ptr;
ptr = (char * ) & a;
printf("%d", * ptr);
return 0;
}
(一) 1
(乙) 320
(C) 64
(D)编译错误答案: (C)
解释:大端字节顺序:数据的最高有效字节放在地址最低的字节。其余数据按顺序放置在内存中接下来的三个字节中。
Little Endian Byte Order:数据的最低有效字节放在地址最低的字节。其余数据按顺序放置在内存中接下来的三个字节中。
a= 320,a 的 2 字节表示:
但是由于我们在这里使用的是小端格式,所以它实际上会存储在内存中,如:
ptr 是一个字符指针,在解除引用时将输出一个字节,即第一个字节:(01000000) 2等于 64。
所以,正确的选项是(C)。
这个问题的测验