预处理
#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; }