exercise11

预处理


#include<stdio.h>
#define NUM 100
int main()
{
        printf("%d\n",NUM);
        printf("hello,linux!");
        return 0;
}



//5.写一个宏可以将一个数字的奇数位和偶数位交换。
//6.使用宏实现两个数中求较大值。
#include<stdio.h>

#define SWAP(x) (((x&(0x55555555))<<1)|((x&(0xAAAAAAAA))>>1))//奇数位左移,偶数位右移,注意括号优先级
#define MAX(a,b) ((a)>(b)?(a):(b)) 

int main()
{
	int x = 5;
	int a = 10;
	int b = 90;
	printf("exchang_num=%d\n", SWAP(x));
	printf("MAX=%d\n",MAX(a,b));

	system("pause");
	return 0;
}

//3.熟悉预处理标识符:
//__LINE__
//__FILE__
//__DATE__
//__TIMRE__
//# 
//## 
#include<stdio.h>

//__FILE__进行编译的源文件
//__LINE__文件当前的行号
//__DATE__文件被编译的日期
//__TIME__文件被编译的时间
//__STDC__编译器遵循ANSI C,其值为1,否则未定义

int main()
{
	printf("file:%s \nline:%d\ndate:%s \ntime:%s \n",__FILE__,__LINE__,__DATE__,__TIME__);//注意 两个下滑线
	system("pause");
	return 0;
}

#include<stdio.h>

#define PRINT(FORMAT,VALUE)\
	printf("the value of "#VALUE" is "FORMAT"\n",VALUE);//i+3;%d,VALUE==13;

#define ADD_TO_SUM(num,value)\
	sum##num += value;//##把它两边的符号合成一个符号

#define do_forever for(;;)


int main()
{
	char *p = "hello""bit\n";
	printf("hello","bit\n");//字符串有自动连接的特点,从逗号前面识别完
	printf("%s",p);//hellohellobit

	int i = 10;
	PRINT("%d", i + 3);//the value of i+3 is 13

	int sum5 = 5;
	int m = ADD_TO_SUM(5, 10);//sum5+10;
	printf("%d\n", m);//15

	system("pause");
	return 0;
}
//带副作用的宏参数
#include<stdio.h>

#define MAX(a,b) ((a)>(b)?(a):(b))

int main()
{
	int x = 5;
	int y = 8;
	int z = MAX(x++, y++);
	printf("x=%d y=%d z=%d\n",x,y,z);//6,10,9
	system("pause");
	return 0;
}

猜你喜欢

转载自blog.csdn.net/zn_wuxunian/article/details/80111784