几道面试题
2009-06-17 17:04
253 查看
1.for(i=0;i <5;i++)
if(fork()==0)
continue;
一共会生成多少个进程?
http://blog.csdn.net/hikaliv/archive/2009/06/17/4276758.aspx
2.unsigned char * p1;
unsigned char * p2;
p1=(unsigned char *)0x01000;
p2=(unsigned char *)0x10000;
p1+15=?
p2+10=?
p1+15=0x0100F
p2+10=0x1000A
3.unsigned int zero=0;
unsigned int compzero=0xFFFF;
这两个有什么问题?修改
sizeof(unsigned int) 可能等于2也可能等于4
所以应该改成 unsigned short int
//系统多少位不知道,所以用~0表示
unsigned int compzero=~0;
4.用位运算编写函数实现下面的功能:
(1)a为char型,设置某一位
(2)a为char型,判断一位是否为1
(3)取出一个字节中的高四位,并转换成整数返回。
//(1)a为char型,设置某一位
char setBit(char a,int n,int d)
{
if(d==1) a|=(1<<(n-1));
else
{
char ch=1<<(n-1);
a&=(~ch);
}
return a;
}
//(2)a为char型,判断一位是否为1
int testBit(char a,int n)//返回0代表该位为0,非0代表该位为1
{
a&=(1<<(n-1));
return a;
}
//(3)取出一个字节中的高四位,并转换成整数返回。
int getHighFour(char a)
{
int b=a>>4;
return b;
}
if(fork()==0)
continue;
一共会生成多少个进程?
http://blog.csdn.net/hikaliv/archive/2009/06/17/4276758.aspx
2.unsigned char * p1;
unsigned char * p2;
p1=(unsigned char *)0x01000;
p2=(unsigned char *)0x10000;
p1+15=?
p2+10=?
p1+15=0x0100F
p2+10=0x1000A
3.unsigned int zero=0;
unsigned int compzero=0xFFFF;
这两个有什么问题?修改
sizeof(unsigned int) 可能等于2也可能等于4
所以应该改成 unsigned short int
//系统多少位不知道,所以用~0表示
unsigned int compzero=~0;
4.用位运算编写函数实现下面的功能:
(1)a为char型,设置某一位
(2)a为char型,判断一位是否为1
(3)取出一个字节中的高四位,并转换成整数返回。
//(1)a为char型,设置某一位
char setBit(char a,int n,int d)
{
if(d==1) a|=(1<<(n-1));
else
{
char ch=1<<(n-1);
a&=(~ch);
}
return a;
}
//(2)a为char型,判断一位是否为1
int testBit(char a,int n)//返回0代表该位为0,非0代表该位为1
{
a&=(1<<(n-1));
return a;
}
//(3)取出一个字节中的高四位,并转换成整数返回。
int getHighFour(char a)
{
int b=a>>4;
return b;
}