面试中常被问到的问题

1、写一个“标准”宏

交换两个参数的宏定义为:

#define SWAP(a,b)    (a)=(a)+(b);(b)=(a)-(b);(a)=(a)-(b);

#define SWAP(x,y)   x=x*y;y=x*y;x=x*y;    //要求x,y不等

输入两个参数,输出较小的一个:#define MIN(A,B) ((A)<(B)?(A):(B))

2、位操作:给定一个整型变量a ,写两段代码,第一个设置a的bit3,第二个清楚a的bit3。在以上两个操作中,要保持其他位不变。

#define BIT3 (0x1<<3)

static int a;

void set_bit3(void)

{

a=a|BIT3;

}

void clear_bit3(void)

{

a=a&~BIT3;

}

 

3、

char str1[]="abc";

char str2[]="abc";

const char str3[]="abc";

const char str4[]="abc";

char *str5="abc";

char *str6="abc";

const char *str7="abc";

const char *str8="abc";

cout<<(str1==str2)<<endl;

cout<<(str3==str4)<<endl;

cout<<(str5==str6)<<endl;

cout<<(str7==str8)<<endl;

 结果: 0 0 1 1

解答:str1,str2,str3,str4是数组变量,它们有各自的内存空间

str5,str6,str7,str8是指针,它们指向相同的常量区域

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值