Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4511096
  • 博文数量: 356
  • 博客积分: 10458
  • 博客等级: 上将
  • 技术积分: 4734
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-24 14:59
文章分类

全部博文(356)

文章存档

2020年(17)

2019年(9)

2018年(26)

2017年(5)

2016年(11)

2015年(20)

2014年(2)

2013年(17)

2012年(15)

2011年(4)

2010年(7)

2009年(14)

2008年(209)

分类: C/C++

2008-09-12 21:30:10

题目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
阅读(2835) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~