预处理
/* ---用 # 号开头的命令是预处理命令 ---“预处理”即:预先处理,在编译前对代码进行一个预先处理 include <文件.h> // 这个是文件包含命令 总上所述, # include <stdio.h> 即是:执行“预处理文件包含stdio.h” */
# include
/* 当 main.c 这个主文件越写越大的时候 我们可以将它其中的某些部分,通过写到其他文件的方式 来达到将代码有条理地进行布局分离的目的 从而实现高效维护和管理的目标 如同所示: */
# define
/* 1. # define 宏定义命令:使用一个表示符“表示”(或者说“完全替代”)一个字符串 2. 语法: # define 宏名 字符串 */ # include <stdio.h> # define unint unsigned int // 宏名的规范写法为“全大写”,即 UNINT。 # define PI 3.14f # define NAME "tomato" # define A num * 2 + 1 # define B (num * 2 + 1) int main() { unint num = 1; printf("圆周率%f \n", PI); printf("我的名字%s \n", NAME); printf("结果%d \n", 3 * A); // 结果:7 printf("结果%d \n", 3 * B); // 结果:9 //printf("", ); return 0; }
# include <stdio.h> # define M(x) x*x+3*x # define P(a,b) a + b int main() { int res = M(2); printf("结果为 %d \n", res); res = M(6); printf("结果为 %d \n", res); res = M(3 + 3); printf("结果为 %d \n", res); res = M(2 * 3); printf("结果为 %d \n", res); res = P(1, 2); printf("%d \n", res); return 0; } /* 运行结果—————— 结果为 10 结果为 54 结果为 27 结果为 54 3 请按任意键继续. . . */
# include <stdio.h> # define N(a,b) a = a ^ b; b = a ^ b; a = a ^ b; // ^ 异或,详情见底部 // 当一行内容过多的时候,可以用"\"符号实现“视觉上发生换行但代码本质还是一行” int main() { int n = 9, m = 8; printf("%d %d \n", n, m); N(n, m); printf("%d %d \n", n, m); return 0; } /* 运行结果—————— 9 8 8 9 请按任意键继续. . . */ /* 上面的异或原理:(author:小六子,from:知乎) 打个比方a=11011,b=10101a和b做异或得到 01110 将他赋值给a,则a=01110(a=a^b,a承载着a和b的不同),接着将a(01110)和b(10101)做异或得 11011 发现就是原来a的值 于是将它赋值给b,b=11011,则b现在就是a原来的值了(b=a^b),再将a(01110)和b(11011)异或得10101 发现就是原来b的值,将它赋值给a,a=10101,则a现在就是b原来的值(a=a^b) 这样就实现了互换a和b的值 */
# include <stdio.h> # define STR(s) #s # define NUM1(a,b) a##e##b // 连接成aeb # define NUM2(a,b) a##b##99 // 连接成ab99 int main() { printf("%s \n", "abc123"); printf("%s \n", STR("abc123")); printf("%s \n", STR(abc123)); printf("%f \n", NUM1(1.23, 3)); // 连接成aeb,即 1.23e3 => 1.23 * 1000 printf("%d \n", NUM2(12, 5)); // 连接成ab99,即 12599 return 0; } /* 运行结果—————— abc123 "abc123" abc123 1230.000000 12599 请按任意键继续. . . */ /* 上面的异或原理:(author:小六子,from:知乎) 打个比方a=11011,b=10101a和b做异或得到 01110 将他赋值给a,则a=01110(a=a^b,a承载着a和b的不同),接着将a(01110)和b(10101)做异或得 11011 发现就是原来a的值 于是将它赋值给b,b=11011,则b现在就是a原来的值了(b=a^b),再将a(01110)和b(11011)异或得10101 发现就是原来b的值,将它赋值给a,a=10101,则a现在就是b原来的值(a=a^b) 这样就实现了互换a和b的值 */
条件编译
标签:01110,05,res,11011,C语言,异或,printf,define From: https://www.cnblogs.com/seventy/p/c-05.html