int b){if(a>b)returna;elsereturnb;}intmain(void){float a,b,c;a=1.5;b=4.7;c=MAX(a,b);// 展开后:c = (((a)>(b)) ? (a) : (b));printf("c = %d.\n",c);c=max(a,b);// 无法展开,只能调用printf("c = %d.\n",c);return0;}...
printf("int max: %s\n", STR(INT_MAX)); // INT_MAX,int型的最大值,为一个变量 #i nclude<climits> 输出为: int max: 0x7fffffff STR(INT_MAX) --> _STR(0x7fffffff) 然后再转换成字符串; printf("%d\n", CONS(A, A)); 输出为:200 CONS(A, A) --> _CONS((2), (2)) --> ...
MAX宏可以证明具有副作用的参数所引起的问题。 代码语言:javascript 代码运行次数:0 运行 AI代码解释 #defineMAX(a,b)((a)>(b)?(a):(b))intmain(){int x,y,z;x=5;y=8;z=MAX(x++,y++);printf("x=%d y=%d z=%d\n",x,y,z);//输出的结果是什么?return0;} 预处理器处理之后的结果:...
当我们有一个变量int a = 10;的时候,我们想打印出:the value of a is 10 .就可以写:当我们按照下面的方式调用的时候:PRINT(a);//当我们把a替换到宏的体内时,就出现了#a,而#a就是转换为'a'代码就会被处理成运行代码就能在屏幕上打印:7.2##运算符##可以把位于它两边的符号合成一个...
int max_value = MAX(x, y); 宏函数 宏函数是宏定义的另一种常见应用。它可以用来定义一些简单的函数,并且比 C 语言中的函数调用更加高效。下面是一个示例: #define SQUARE(x) ((x) * (x)) 这个宏定义将SQUARE(x)替换为((x) * (x)),表示计算x的平方。可以在代码中直接使用SQUARE(y)来实现这个功...
intmain() { printf("%s\n",__FILE__); printf("%d\n",__LINE__); printf("%s\n",__DATE__); printf("%s\n",__TIME__); return0; } //上面这段代码是在VS2019这个环境下运行的,__STDC__显示未定义 //说明VS2019不支持ANSI C标准 ...
C's Macro Introduction 1.The Connect Macros:## 这是一个预处理连接符,这个操作符主要用来将两个符号连接成为一个完整的宏符号。通过下面的代码,可以看到其具体的使用方法: 如下例子: #include<stdio.h>structmacro{intN;charM; };structmacromacro_drv = {100,20};#defineXNAME(n) x##n#defineMacro(x...
int Move_Max(int x, int y){return x>y?x:y;}int main(){int x = 3;int y = 5;int max = 0;max=Move_Max(x, y);printf("%d",max);return 0;} 运行程序,得到结果: 在我们学习了宏定义后,我们可以借助宏定义和三目运算符来完成这一功能,如: ...
#define MAX(a, b) ((a)>(b)?(a):(b))#include<stdio.h>int main(){printf("%d", MAX(114, 514));return 0;} 栗子2: #define MALLOC(num, type)\(type *)malloc(num * sizeof(type)) //这和\是干啥的?详见地四大点\的作用...//使用MALLOC(10, int);//类型作为参数//预处理器替换...
// 求整数较大值intint_max(int x,int y){returnx>y?x:y;}// 求浮点数较大值floatfloat_max(float a,float b){returna>b?a:b;} 这样写显得有点繁琐,因为求不同的数据类型就要写不同的函数,这时候就可以动态创建宏名称: 代码语言:javascript ...