在C语言中如何用标准宏定义实现计算两个参数中的最小值?
你可以用这三个眼睛操作符(?:)实现,定义,#定义最小(x,y) ((x)<(y)?(x) (y)),测试代码如下:
//程序功能实现,计算两个数字的最小值。
包括< stdio, h >。
定义最小(x, y) ((x) (y)?(x):(y))
Int main(Int argc, char *argv[])
{Int x = 10, y = 15;
Printf(" MIN(% d % d)= % d \ n”,x,y,MIN(x,y));
返回0;}
需要注意的是,宏定义是原始的替换,您需要确保替换的准确性,例如,
定义最小(x, y) (x < y?X:y),在这个定义之后,宏表达式可能看起来是一个问题,而不是期望的结果,例如下面的例子,它可以区分出不同,而编译器可能有不同的结果。
包括< stdio, h >。
定义MIN1 (x, y) (x < y?X,y)
定义MIN2 (x, y) ((x) (y)?(x):(y))
Int main(Int argc, char *argv[])
{Int x = 10, y = 15;
Printf(" MIN1(% d % d)= % d \ n ",x,y,MIN1(+ = 2 x,y));/ /输出MIN1 = 24 (24 (9)
X = 10;
Printf(" MIN2(% d % d)= % d \ n ",x,y,MIN2(+ = 2 x,y));/ /输出MIN2 = 14 (14,15)
返回0;