C语言应用笔记:简单的最大最小值比较

使用宏定义实现泛型比较函数,用于求取两个值的最大值和最小值。

核心宏定义解析

#define MAX(x, y) ((x) > (y) ? (x) : (y)) // 返回两个值中较大的一个
#define MIN(x, y) ((x) < (y) ? (x) : (y)) // 返回两个值中较小的一个
  1. 泛型支持:通过C预处理器实现,可处理任何支持>/<运算符的数据类型(如int、float、double等)
  2. 三元运算符:使用(条件) ? 结果1 : 结果2实现条件判断
  3. 括号包裹:每个变量和整个表达式都用括号包裹,确保运算优先级正确

程序执行流程

  1. 变量初始化
int a = 10, b = 20; // 整型测试数据
float c = 3.14f, d = 2.71f; // 浮点型测试数据
  1. 宏调用演示
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

注意事项

  1. 宏的局限性
  • 参数中的表达式会被多次求值(如MAX(a++, b--)会导致副作用)
  • 缺乏类型安全检查

相关文章

cython如何调用C语言的函数?_c 中如何调用python

在 Cython 中调用 C 语言函数主要通过以下几种方式实现:1. 使用 cdef extern 声明外部 C 函数基本语法cdef extern from "头文件.h":返回类型...

C/C++函数调用的奥秘_c++函数调用原理

在C/C++编程的世界里,函数调用是程序运行的核心机制之一。然而,许多程序员在日常开发中,往往只关注代码的逻辑,而忽略了函数调用背后的底层细节。今天,就让我们一起深入探索C/C++函数调用的全过程,从...

C++成员函数如何工作?this指针、name mangling 成员函数指针解析

0.引言 在C++面向对象编程中,成员函数是对象行为的核心载体。我们每天都在使用成员函数,但却很少深入思考其底层的实现机制:为什么成员函数可以直接访问成员变量?编译器如何区分不同类的同名函数?静态成员...

C语言入门:学生成绩管理程序的完善(1):用文件保存数据

这是C语言入门的第27篇文章。今天讲学生成绩管理程序的完善:怎样利用文件来保存数据。还是昨天的问题:我怎么知道一个文件的内容是什么?我怎么知道比如一行有多少个数,多少个数以后是换行?这是因为文件是我们...

C语言应用笔记:常用的printf打印输出不同类型数据

我叫程序员阿虾, 在终端前摸过太多凌晨, 熟悉printf这一行字带来的安心与危险。今天想跟你聊聊我踩过的坑, 和一些别人不常说的细节, 用第一人称把经验交给你, 有点唠叨, 希望你少走弯路。为什么要...