一.#define基本用法
#include <stdio.h>
#include <stdlib.h>
//数字和字符串
#define FAMILY "5+2+1:姥爷,爸爸,妈妈,姐姐,我\
+托尼,Coco+肉肉"
#define LARRY_AGE 21
//运算
#define SQUARE(x) x*x//×
#define XSQUARE(x) (x)*(x)//√-确保先进行括号内运算
//#define MAX(x,y) (x)>(y)?x:y
#define MAX(x,y) x>y?x:y//因运算符的优先级(234)高于>的优先级(6),故可以不带括号
int main3() {
printf("我的家庭成员:%s\n", FAMILY);
printf("肉肉的年龄:%d\n", LARRY_AGE);
printf("%d的平方为%d\n", 2 + 3, SQUARE(2 + 3));//11=2+3*2+3
printf("优化后%d的平方为%d\n", 2 + 3, XSQUARE(2 + 3));//25=(2+3)*(2+3)
printf("2+3和3+4之间更大的是:%d\n", MAX(2 + 3, 3 + 4));
system("pause");
return 0;
}
二.与typedef对比
typedef的使用场景
typedef与define区别:
#define int* defINT
typedef int* tdefINT
defINT x,y;
tdefINT tx,ty;
y为int类型, 其余全为int*类型, 因define为机械替换
注明所在平台的系统字节数:
#include <iostream>
using namespace std;
//在Windows中系统为32位,即4个字节占32位(byte)
typedef long long int64;
int main21(){
int64 salary = 10000000000;//一百亿
printf("My ideal salary is %lld.\n", salary);
cout<<sizeof(long long)<<endl;//8 -2的(n*8-1)次方~2的(n*8-1)次方-1, n=sizeof(type)
cout<<sizeof(long)<<endl;//4
cout<<sizeof(int)<<endl;//4
system("pause");
return 0;
}
/*在Linux中
#include <iostream>
using namespace std;
typedef long int64;
int main(){
int64 salary = 10000000000;//一百亿
printf("My ideal salary is %ld.\n", salary);
cout<<sizeof(long long)<<endl;//16 -2的(n*8-1)次方~2的(n*8-1)次方-1, n=sizeof(type)
cout<<sizeof(long)<<endl;//8
cout<<sizeof(int)<<endl;//8
return 0;
}
*/