C++程序员面试常遇的12个题
一、x&y 按位与运算如x=3 y=3
则:x=y=0011
结果还是:3
x|y 按位或运算,相同为0,不同为1
二、
int Vac=3;
int main(){
int Vac=10;
::Vac ;
count<<::Vac;
count<<Vac;
return 0;
}
结果:4,10
三、
int i=3,j=4;
i?i : j;
结果:4 4
五、
int i=1,j=2;
int k=i j;
结果:k=3;
六、
x=x 1;
读两次x的地址,编译器不认为左右的x地址相同
x =1;
x的地址制度一次
x ;
效率由低到高排列
七、
#define product(x) (x*x)
int main(){
int i=3,j,k;
j=product(i );
//i=5
k=product( i);
return 0;}
结果;j=9;k=49;
八、
int a=5,b=3;
!a&&b ;
结果:a=5 b=3 因为当&&前面的运算为flase时候,不计算后面的,直接false
九、
char foo(void)
{
unsigned int a=6;
int b=-20;
char c;
(a b>6)?c=1:c=0;
return c;
}
结果:c=1;
无符号和有符号的相加,有符号的会自动转化为无符号类型,即b会转化成一个很大的整数,所以肯定大于6;
十、
#define SQR(x) (x*x)
main(){
int a,b=3;
a=SQR(b 2);
}
结果:a=11;
应为传过去的是b 2
而实际执行的是b 2*b 2;
而不是(b 2)*(b 2)
如果SQR(x) ((x)*(x)) 则结果就是25了。
十一、
预处理,一年中有多少秒,应为牵扯的会溢出,所以数据类型要注意
#define SECONDS_PRE_YEAR(60*60*24*365)UL
十二、
宏定义:MIN
#define MIN(A,B) ((A)<=(B)?(A):(B))注意括号的使用。
资料未整理完整,以上供参考
补充:软件开发 , C++ ,