题目1这样说:用到Inter处理器,并且采取小端格式存储数据以下输出结果是什么?
char c1=1;
char c2=2;
short n=255;
long l=0xDDCCBBAA;
A:0x0000(地址) 01 02 FF 00
0x0004(地址) DD CC BB AA
B:0x0000 01 02 FF 00
0x0004 AA BB CC DD
C:0x0000 01 02 00 FF
0x0004 DD CC BB AA
D:0x0000 01 02 00 FF
0x0004 AA BB CC DD
题目2这样说:系统采用32位处理器并且使用小端格式并且用字节表示地址,读以下代码回答SingleData的值是多少?
unsigned long dataBuffer[]={0x82D90004,0x7E13F840,0x4091000C};
unsigned short SingleData;
SingleData=*((unsigned short *)((unsigned long)dataBuffer+7));
牛人帮我弄哈 给个详细解答 偶谢谢拉
题目3这样说:
题目3这样说:
#define ARRAY(a,b) a+b
int array[6]={3,2,1,4,5,6};
int *ptr=array;
int result=*ARRAY(ptr,2)*ARRAY(*ptr,2);
问result的值是多少?牛人帮我详细解释下。
题目4这样说:
int deep(input)
{
int local;
if(input==100)
{
return 1;
}
if((input%3)==0)
local=input++;
else
local=++input;
return deep(local+1)+1;
}
main()
{
printf("%d",deep(0));
}
问程序执行的结果是什么?
==============================
小端方式就是低字节在低地址,高字节在高地址.大端方式则相反.Intel的是小端方式.
1.B
short n = 255; //0x00FF,---FF 00 (低->高)
long l = 0xDDCCBBAA; //AA BB CC DD (低->高)
2.unsigned long dataBuffer[]={0x82D90004,0x7E13F840,0x4091000C};
在内存中为
地址 数据
0 04
1 00
2 D9
3 82
4 40
5 F8
6 13
7 7E
8 0c
9 00
10 91
11 40
所以(unsigned long)dataBuffer+7)指向了7号地址的7E,又因为unsigned short占16位,所以取0c7e
3、为11
#define ARRAY(a,b) a+b //a+b没有加括号()
所以展开后为*ptr + 2*(*ptr)+2 = 11;
4:
递归.
input参数变化: 0 1 3 4 6 7 9 10 12 13 15........ 99 100
可见,能%3==0的都在 1~100能%3==0的为34个.
不能的为67个,其中有一半不会参加deep(input)运算 0与100参加了,所以(67-1)/2==33个没有参加deep(input)
所以总共有101 -33 == 68个参加了deep(input)
参加一次deep(input) 返回值就加1 deep(100)返回1 deep(99)返回2 总共有68个,所以结果为68
阅读(2843) | 评论(0) | 转发(0) |