[C/C++]宏定义及typedef用法

一.#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;
}
*/
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值