C基础问题

1、比较a、b的大小,不要用大于、小于和IF运算符?
 使用define宏加移位操作.
#include <iostream> 
using namespace std;   
#define MAX(A,B) (((A)-(B))>>31 ? (B) : (A))   
int main() 
{     
 int a = 10, b = 100;     
 cout << MAX(a, b) << endl; 
}

2、程序中 const和define优劣比较?
 #define//简单的变量替换,不会有类型检查如: #define ABC "abc"
 const//会有类型检测,如下就会报错 const int = "abc";
 //除此之外define能当函数使用,const则不能,如: #define max(a,b)(a>b?a:b)
 1.差别:

const与#define最大的差别在于:前者在堆栈分配了空间,而后者只是把具体数值直接传递到目标变量罢了。或者说,const的常量是一个Run-Time的概念

,他在程序中确确实实的存在可以被调用、传递。而#define常量则是一个Compile-Time概念,它的生命周期止于编译期:在实际程序中他只是一个常数、

一个命令中的参数,没有实际的存在。

const常量存在于程序的数据段.

#define常量存在于程序的代码段。

2优缺点:

至于两者的优缺点,要看具体的情况了。
#define 优点
i.从run-time的角度来看,他在空间上和时间上都有很好优势。

ii.从compile-time的角度来看,类似m=t*10的代码不会被编译器优化,t*10的操作需要在run-time执行。而#define的常量会被合并。

缺点
没有类型检查

const
优点
有类型检查

3、SendMessage和PostMessage区别?

PostMessage负责消息放消息队列确定何及否处理   
SendMessage要等受消息处理返码(DWord类型)才继续   
PostMessage执行马返   
SendMessage必须等消息处理才返

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值