发布网友 发布时间:2022-05-25 23:38
共0个回答
结果为15。程序的第一行进行带参宏定义,用宏名MIN表示条件表达式(x) < (y) ? (x) : (y) ,形参x,y均出现在条件表达式中。程序中 MIN(i,j) 为宏调用,实参i,j,将代换形参x,y。宏展开后该语句为: 10*(i) < (j) ? (i) : (j),运算结束的结果为15。宏只是做了简单的替换...
#define MIN(x,y) (x)<(y)?(x):(y) main() {int i=10,j=15, k; k=...答案是15 这就是宏定义的恶心之处 k=10*MIN(i,j); 宏展开之后是这样的 10*(i)<(y)?(x):(y)10*10 和 15 当然是15小了
#define MIN(x,y) (x)<(y)?(x):(y) #include “stdio.h” void main...k=10*MIN(i,j);由于MIN定义为宏后,该等式被替换为:k=10*(x)<(y)?(x):(y) =10*(10)<(15)?10:15 由于乘法优先级高于比较优先级,因此:k = 100<15?10:15 由于100不小于15,因此值等于15
#define MIN(x,y)(x)<(y)?(x):(y) 是什么意思MIN(x,y)(x)<(y)?(x):(y) 的意思是:如果表达式x的运算结果小于表达式Y的运算结果,MIN(x,y)的值就为X,反之则为Y
#define MIN(x,y)(x)<(y)?(x):(y) void main() int i,j,k; i=10;j...10*MIN(i,j) 把MIN宏展开就是 10*(i) < (j) ? (i) : (j) 代入数就是 10*10 < 15 ? 10 : 15 上面的表达式返回值是15 要想达到效果应该把(x)<(y)?(x):(y) 括起来:define MIN(x,y) ((x)<(y)?(x):(y))...
...<stdio.h> #define MAX(x,y)(x)>(y)?(x):(y) void main() { inta...include <stdio.h>#define MAX(x,y) (x)>(y)?(x):(y)void main() { int a,b,c;a=2;b=3;c=4*MAX(a,b);//等价:c=4*(a)>(b)?(a):(b);printf("%d\n",c); }
写一个标准的宏#define MIN(X,Y) ((X)>(Y)?(Y):(X)) MIN(X,Y)是什么...Min(X,Y)后面跟的是一个条件语句,也就是 如果x>y时,MIN(X,Y)的值就为第一个值,也就y;如果x<y时,MIN(X,Y)的值就为第二个值,也就是x。实际上就是取最小值。
以下程序的输出结果是()。 #define abc(x,y)(×)<(y)?(×):(y)define abc(x,y)(x)<(y)?(x):(y)int main(){ int a=10,b=15,c;c=10*abc(a,b);printf("%d\n",c);return 0;} //明确abc(x,y)是宏定义,不是普通函数 //c=10*abc(a,b);相当于(10*x)<y?x:y即100<15?10:15很显然结果为15 //如果后面用括号括起来即c=10*(abc(a...
k=10*MIN(i,j);#define MIN(x,y) (x)>(y)?(x):(y)这句的结果是15呀...这个好理解。 我帮你分析下 宏不是函数,宏展开就是相当于套公式 展开之后就是 10 * MIN(i,j)= 10 * (10)>(15)?(10):(15);= 100 > 15?:15 因为100 大于15,所以结果就是10了
MIN(x,y) (x)<(y)?(x):(y)这里是什么意思,怎么会输出15用宏定义实现一个小的宏MIN(x,y),会输出x和y中小的那一个。但要注意,预编译只是单纯的替换操作,而不能视为简单的函数调用。因此在k=10*MIN(i,j)语句中,编译器将该条语句替换为k=10*(i)<(j)?(i):(j),先执行10*i得到100,最后实际计算的是100<15?10:15,条件为假因此输出15。