C语言应用笔记:简单的最大最小值比较
使用宏定义实现泛型比较函数,用于求取两个值的最大值和最小值。
核心宏定义解析
#define MAX(x, y) ((x) > (y) ? (x) : (y)) // 返回两个值中较大的一个
#define MIN(x, y) ((x) < (y) ? (x) : (y)) // 返回两个值中较小的一个
- 泛型支持:通过C预处理器实现,可处理任何支持>/<运算符的数据类型(如int、float、double等)
- 三元运算符:使用(条件) ? 结果1 : 结果2实现条件判断
- 括号包裹:每个变量和整个表达式都用括号包裹,确保运算优先级正确
程序执行流程
- 变量初始化:
int a = 10, b = 20; // 整型测试数据
float c = 3.14f, d = 2.71f; // 浮点型测试数据
- 宏调用演示:
printf("整型最大值: %d\n", MAX(a, b)); // 展开为 ((a) > (b) ? (a) : (b))
printf("整型最小值: %d\n", MIN(a, b)); // 展开为 ((a) < (b) ? (a) : (b))
printf("浮点最大值: %.2f\n", MAX(c, d)); // 同理处理浮点数
printf("浮点最小值: %.2f\n", MIN(c, d)); // 保留两位小数输出
输出结果
整型最大值: 20
整型最小值: 10
浮点最大值: 3.14
浮点最小值: 2.71
注意事项
- 宏的局限性:
- 参数中的表达式会被多次求值(如MAX(a++, b--)会导致副作用)
- 缺乏类型安全检查