C 中的 MIN 和 MAX

2024-01-02

在哪MIN and MAX如果有的话,是在 C 中定义的吗?

实现这些的最佳方法是什么,尽可能通用并安全地输入? (首选主流编译器的编译器扩展/内置函数。)


在哪MIN and MAX如果有的话,是在 C 中定义的吗?

他们不是。

实现这些的最佳方法是什么,尽可能通用和类型安全(首选主流编译器的编译器扩展/内置函数)。

作为函数。我不会使用像这样的宏#define MIN(X, Y) (((X) < (Y)) ? (X) : (Y)),特别是如果您计划部署代码。要么自己写,使用标准之类的东西fmax http://en.cppreference.com/w/c/numeric/math/fmax or fmin http://en.cppreference.com/w/c/numeric/math/fmin,或使用修复宏GCC 的 typeof http://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Typeof.html#Typeof(你也会得到类型安全奖励)GCC语句表达式 https://gcc.gnu.org/onlinedocs/gcc/Statement-Exprs.html#Statement-Exprs:

 #define max(a,b) \
   ({ __typeof__ (a) _a = (a); \
       __typeof__ (b) _b = (b); \
     _a > _b ? _a : _b; })

每个人都说“哦,我知道双重评估,这没问题”,几个月后,您将连续几个小时调试最愚蠢的问题。

注意使用__typeof__代替typeof:

如果您正在编写一个头文件 包含在 ISO C 中时必须有效 程序,写__typeof__代替typeof.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C 中的 MIN 和 MAX 的相关文章

随机推荐

  • 使用两个版本的 Python 安装 IPython (Windows)

    是否可以有IPython 0 12 安装在same系统有两个不同版本的 Python v 2 7 和 3 2 目前 我的系统上运行着两个版本的 Python 我使用两台机器 一台带有Windows 7 64 位 另一个XP SP2 32 位
  • Xml Linq,删除 XElement C# 中的重复节点

    我使用 Xml Linq 来管理 xml 配置文件 我有 XElement Company CalidadCodigo ParserSQL Reglas 我需要删除 XElement 中的重复值 节点 Add Key Value 其中值重复
  • Groovy:“def x = 0”中“def”的用途是什么?

    在下面的代码中 摘自Groovy 语义手册页 http groovy lang org semantics html while loop 为什么要在赋值前加上关键字def def x 0 def y 5 while y gt 0 prin
  • 一条消息可以有多个发件人吗?

    当我想检查谁使用 JavaMail 向我发送了特定电子邮件时 我可以用 Message getFrom 它返回一个 Message 在什么情况下 一条复活的消息可以有多个来自它的身份 关于API https javamail java ne
  • 如何在 vue nuxt ts 中对特定 div 使用滚动事件监听器

    我知道 nuxt js 很有可能做到这一点 但是我们如何使用 nuxt 和丑陋的 ts 来做到这一点呢 如果有人能够做到这一点 请将此代码转换为 script lang ts 的条款 对于 nuxt 来说 在监听特定 div 附加示例的滚动
  • MySQL InnoDB 因等待表级锁而挂起

    我有一个大型生产网络应用程序 Glassfish 3 1 MySQL 5 5 所有表都是InnoDB 每隔几天应用程序就会完全挂起 SHOW FULL PROCESSLIST显示不同表上的许多简单插入或更新查询 但都有状态 等待表级锁 例子
  • 从 JSP 列表填充 JavaScript 数组

    好吧 也许有人可以帮助我解决我正在尝试解决的问题 本质上 我有一个 JSP 页面 它获取 Country 对象的列表 来自 Spring Portlet SimpleFormController 的方法 referenceData 不完全相
  • Spark 中的任务是什么? Spark Worker如何执行jar文件?

    阅读了一些文档后http spark apache org docs 0 8 0 cluster overview html http spark apache org docs 0 8 0 cluster overview html 我有
  • Spring 5 LDAP 身份验证和 JWT 令牌作为响应

    你好 我一直在尝试配置 spring 让它在用户 通行证通过 LDAP 服务器身份验证时返回 JWT 令牌 考虑下面的用例 在上图中 我已将 WebSecurity 配置为使用 Bearer 检查 过滤请求 请参阅下面的代码 WebSecu
  • 如何因数据绑定的 safeUnbox 警告而导致构建过程失败

    这个问题 https stackoverflow com questions 42872201 data binding safeunbox warning解释什么是 safeUnbox 警告 我的 build gradle 中有以下内容
  • 如何检测触摸事件是否已落在 EditText 内?

    我可以找到 getX 和 getY 都返回一个浮点数 但是如何检测 TouchEvent e get e getY 的坐标是否在 EditText UI 元素的边界内 我注意到 getX 和 getY 是浮点数 但 getHeight 和
  • 使用 Jquery Ajax 和 PHP 的 Google 隐形 Recaptcha

    试图让我的表单使用谷歌隐形验证码与我的 jQuery AJAX 和 PHP 一起正常工作 根据我的研究 令牌似乎没有通过 AJAX 正确发送到我的 PHP 页面 提交表单时 我的 PHP 页面不断收到以下错误 array 2 success
  • nginx 上的 Zend 框架

    我一直在开发的基于 Zend Framework 的站点现在正在迁移到其生产服务器 该服务器原来是 nginx 惊讶 当然 该站点无法正常工作 因为它是在 Apache 上开发的并且依赖于 htaccess 文件 我的问题是 有人有这方面的
  • Android Gallery 的 getView() 返回不正确的位置

    谢谢阅读 我使用 Android Gallery 并将两个 LayoutParams 都设置为 MATCH PARENT 来一次显示一张全屏图像 这是我的代码 布局 xml
  • 从 CSV 文件的字符串列中删除新行

    我有一个包含多个字段的 CSV 文件 很少有字段 字符串 的数据跨越多行 我想将这些多行聚合成一行 输入数据 1 asdsdsdsds John 2 dfdhifdkinf dfjdfgkdnjgknkdjgndkng dkfdkjfnjd
  • 如何修复 Bower ECMDERR

    我在 Windows 7 上使用 yeoman 和 bower 但在创建应用程序时出现以下错误 yo webapp 错误是 bower not cached git github com jlong sass bootstrap git 3
  • 正则表达式删除一个空格

    删除一个空格的正则表达式是什么 例如 H e l l o W o r l d gt Hello World 请注意 Hello World 之间仍然有一个空格 一开始它之间就有两个空格 仅供参考 我正在使用 C 正则表达式 以前我做过类似的
  • UILabel视图在高度大于8192时消失

    将大字符串分配给 UILabel 并且 将此标签添加到滚动视图中 当 UILabel 高度大于 8192pt 即 2 13 时 UILabel 消失 这是 iOS 的错误吗 我应该使用其他实现来渲染如此数量的字符串吗 我应该将表格视图与单元
  • 使用ActiveRecord实现Rails中的复杂关系

    From 另一个问题 https stackoverflow com questions 27342419 generate a rails model from within code invoke generator from a co
  • C 中的 MIN 和 MAX

    在哪MIN and MAX如果有的话 是在 C 中定义的吗 实现这些的最佳方法是什么 尽可能通用并安全地输入 首选主流编译器的编译器扩展 内置函数 在哪MIN and MAX如果有的话 是在 C 中定义的吗 他们不是 实现这些的最佳方法是什