C 中的整数溢出:标准和编译器

2024-02-04

感谢 Carl Norum 的编辑,以包含正确的标准参考。

C 标准规定

If an 特殊情况发生在表达式求值期间(即,如果结果未在数学上定义或不在其类型的可表示值范围内),则行为未定义。

是否有编译器开关可以保证整数溢出时的某些行为?我想避免鼻恶魔。特别是,我想强制编译器在溢出时换行。

为了唯一起见,我们将标准设为C99,编译器设为gcc。但我对其他编译器(icc、cl)和其他标准(C1x、C89)的答案感兴趣。事实上,只是为了惹恼 C/C++ 人群,我什至希望得到 C++0x、C++03 和 C++98 的答案。

注:国际标准 ISO/IEC 10967-1 可能与此相关,但据我所知,它仅在资料性附件中提及。


看一眼-ftrapv and -fwrapv http://gcc.gnu.org/onlinedocs/gcc-4.0.2/gcc/Code-Gen-Options.html:

-ftrapv

此选项针对加法、减法、乘法运算的有符号溢出生成陷阱。

-fwrapv

此选项指示编译器假设加法、减法和乘法的有符号算术溢出使用二进制补码表示进行回绕。该标志启用一些优化并禁用其他优化。根据 Java 语言规范的要求,Java 前端默认启用此选项。

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

C 中的整数溢出:标准和编译器 的相关文章

随机推荐

  • Google Maps API v3:从数组添加标记不起作用

    首先感谢您考虑回答这个问题 非常感谢 我使用以下代码创建了一个地图 效果非常好 function initialize var mapOptions zoom 5 center new google maps LatLng 48 160 6
  • 模板不存在 Django

    我的 Django 模板位置列出为 python Lib site packages django contrib auth templates 在我看来我有 return render to response hello html nam
  • 通过代码 tradeview/pine 脚本隐藏图表、数量和信号标签上的交易

    每次我更新策略代码时 样式都会重置 这意味着 图表上的交易 信号标签 Quantity 被重置为显示 有没有办法覆盖该行为 以便我可以隐藏 图表上的交易 非常感谢您对这个看似微不足道的问题的帮助 不 默认情况下没有禁用它们的功能 前段时间我
  • MySQL 索引上的正则表达式

    我有查询在 where 子句中有多个正则表达式 where 子句中包含的列已被索引 但查询没有使用索引 MySql 正则表达式是否会导致使用索引 如果没有 解决方法是什么 不可以 正则表达式查找不能使用索引 如果您应用正则表达式的对象是索引
  • vectorize_sequences 的标准实现

    In 弗朗索瓦 肖莱 https fchollet com s 使用 Python 进行深度学习 https www manning com books deep learning with python 出现这个函数 def vector
  • 如何从类库中读取“System.ServiceModel”配置节组?

    有没有办法访问 System ServiceModel 客户端配置 即基于类 dll 项目中的app config ConfigurationManager GetSection string 允许您从执行应用程序的 app config
  • 空格键:如何在 if 语句中使用 and/or

    我有以下代码 div class div 如何在空格键模板的 if 条件中使用 AND OR 空格键无法处理逻辑表达式 因此您需要创建一个助手来为您处理计算 其实你可以实现and具有嵌套 if 的功能如下 if condition1 if
  • 如何在 Wix 安装程序中添加 url [LINK]

    我正在使用 Wix 工具集版本 3 7 我想在欢迎屏幕描述中添加一些指向产品网站的链接 如何实现这一目标 我认为你可以通过做这样的事情来做到这一点
  • 在交叉编译时我必须对 C++ 库做什么?

    这是我的配置的编译器部分 IF UNIX Compiler flags specify the cross compiler SET CMAKE C COMPILER home username projects buildroot out
  • 使用 fxml 文件设置anchorPane的内容

    我使用手风琴控件 根据标题窗格 我需要将 fxml 文件加载到锚窗格中 所以我有两部分 一部分用于手风琴 另一部分用于anchorPane 根据点击显示内容 FXML private StackPane tmpPane FXML priva
  • Gradle dagger lint:按包忽略

    我使用 Gradle 创建了一个 Android 项目 我添加了一个 Dagger 库 dependencies compile com squareup dagger dagger compiler 1 2 1 compile com s
  • 如何将react数据发布到express

    我正在尝试创建一个图书应用程序 我在前端做出反应 在后端使用节点js 当我尝试在后端创建时 它说无法 POST create 我该怎么办 该文件夹分为前端和后端 我正在使用 axios 我是 React js 的新手 请帮忙 我如何将 Re
  • 最高效的 CSS 选择器:标题标签、类还是 ID? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何在不存储一副牌的情况下实现荷官类?

    Question 即使只有 52 张牌 permutationIndex我在其中描述的地方说明部分 将是一个巨大的数字 它是其中之一的数字52 需要29个字节来存储 Thus 我不知道一个简单的方法来计算permutationIndex一个
  • 作为 Android .apk 一部分的 Pdf 文件

    我必须构建一个 Android 应用程序来显示 pdf 文件列表 这些 pdf 文件应该受到保护 换句话说 应用程序的用户不应该能够通过任何方式 复制 剪切 打印 等 获取 pdf 内容的副本 我现在的问题是 我应该如何将 pdf 文件的内
  • 使用正则表达式标记字符串中的文本但排除链接

    我有一个文本 我希望当用户搜索某个术语时 通过用标记标签包裹该术语来突出显示该术语 javascript 来包装匹配项 var sampleText window document getElementById test innerHTML
  • java - 使用基类实例在派生类中访问受保护的成员

    我在派生类中创建了基类的实例并尝试访问受保护的成员 我可以直接访问派生类中的受保护成员 而无需实例化基类 基类 package com core public class MyCollection protected Integer int
  • 尝试在 Windows Phone 开发中心更新 XAP 时出错

    我正在尝试提交 Windows Phone 应用程序的更新 但是当我单击 更新应用程序 并选择相应的 xap 文件时 出现以下错误消息 ScriptObject InvokeFailed 参数 调试资源字符串不可用 通常 键和参数提供了足够
  • JSON 编码/解码 GTK 枚举

    我必须将自定义 GTK 元素的各种属性保存到文件中以供将来使用 并由于简单的格式和字典嵌套而决定使用 JSON 许多属性都是 GTK 枚举 例如gtk PAGE ORIENTATION PORTRAIT gtk ANCHOR CENTER
  • C 中的整数溢出:标准和编译器

    感谢 Carl Norum 的编辑 以包含正确的标准参考 C 标准规定 If an 特殊情况发生在表达式求值期间 即 如果结果未在数学上定义或不在其类型的可表示值范围内 则行为未定义 是否有编译器开关可以保证整数溢出时的某些行为 我想避免鼻