`printf()` 中格式说明符“%qd”的用途是什么?

2024-05-09

我看到格式说明符%qd浏览时github https://github.com/Microsoft/clang/blob/master/test/Sema/format-strings.c代码。然后我检查了 GCC 编译器,它工作正常。

#include <stdio.h>

int main()
{  
    long long num = 1;
    printf("%qd\n", num);
    return 0;
}

格式说明符的目的是什么%qd in printf()?


%qd旨在轻松处理所有 64 位 机器,最初是一个 bsd-ism (quad_t).

然而,egcs (and gcc在此之前)将其视为等同于ll, 哪个 并不总是等价的:openbsd-alpha 的配置是这样的long是 64 位,因此quad_t被类型定义为long。 在这种特殊情况下,类似 printf 的属性不起作用 故意的。

If sizeof(long long) == sizeof(long)在 openbsd-alpha 上,它应该可以工作 无论如何 - 即%ld, %lld, and %qd应该可以互换。在 OpenBSD/alpha 上,sizeof(long) == sizeof(long long) == 8.

在广泛使用 ISO C99 扩展之前,已经存在了多种特定于平台的长度选项,q就是其中之一。它用于整数类型,这导致printf期望 64 位(四字)整数参数。它常见于 BSD 平台中。

然而,C99 和 C11 都没有提到长度修饰符q。 macOS (BSD) 手册页fprintf() marks q已弃用。所以,使用ll推荐代替q.

参考:

https://gcc.gnu.org/ml/gcc-bugs/1999-02n/msg00166.html https://gcc.gnu.org/ml/gcc-bugs/1999-02n/msg00166.html

https://en.wikipedia.org/wiki/Printf_format_string https://en.wikipedia.org/wiki/Printf_format_string

https://port70.net/~nsz/c/c11/n1570.html#7.21.6.1p7 https://port70.net/%7Ensz/c/c11/n1570.html#7.21.6.1p7

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

`printf()` 中格式说明符“%qd”的用途是什么? 的相关文章

随机推荐

  • php postgresql pdo 从标准输入复制

    COPY table name field1 field2 field3 FROM STDIN CSV 1 2 q w 3 4 a s 5 6 d 如何通过 PDO 执行此查询 Update 问题是 PDO 驱动程序将此查询作为语句执行 例
  • java.lang.AbstractMethodError: javax.xml.parsers.DocumentBuilderFactory.setFeature(Ljava/lang/String;Z)V

    我有一个应用程序 可以使用它创建 Excel 文件apache POI 3 17我收到此错误消息apache POI当我运行应用程序时记录Tomcat 这是什么意思 我该如何解决 我最终将其添加到 eclipse ini 文件中 Djava
  • 是否有可能在 C++ 中获取 std::array 的子数组?

    我想做类似的事情 std array
  • 删除整个表格行

    有没有办法删除整个表格行 穿过整个单元格 而不仅仅是文本 我尝试过申请 text decoration line through 在列和行级别 但这只会删除文本 而不是整个单元格 有没有办法打整排 如果所有行的高度相同 最简单的方法可能是应
  • 将所有脚本参数复制到另一个变量

    我需要复制所有脚本参数并将它们传递给另一个脚本 我尝试这样做 args printargs sh args echo printargs sh args 但在这种情况下 如果我使用包含空格的参数调用我的父脚本 例如 script sh ar
  • Visual Studio Code 中的剪切行快捷方式(VS 中的 Ctrl+L)(不是删除行!)

    Visual Studio 默认情况下有快捷键 Ctrl l 剪切线 它将光标所在的行复制到剪贴板并将其删除 我在 Visual Studio Code 中找不到它 有没有办法将其添加为最终用户 我知道有Ctrl Shift K用于删除行
  • 为什么 'self.self' 在 swift 中编译并运行?

    昨天我回顾了 Swift 中的一段代码 其中包括这一行 self self someProperty 这让我很惊讶 因为这个词self被保留并用作对当前实例的引用 起初我用其他语言检查了这种现象 但都给出了错误 这并不奇怪 但是 为什么它能
  • Alexa 找不到我的技能

    我根据 Alexa Skills Kit 中提供的示例之一将 Alexa Skill 创建为 AWS Lambda Node js 应用程序 我遵循了所有说明 我的 Echo 注册的账户与我在 AWS 上的开发者账户相同 我在亚马逊开发者控
  • IE - 阻止 Iframe 中的兼容模式

    是否可以从 Iframe 中禁用 IE 兼容模式 如果我在iframehtml 这不起作用 这取决于您是否有权访问主机 父级 的 x ua 兼容元 当主机页面处于 IE9 模式或更高版本时 其状态强加于 iframe 这里有一个很好的解释
  • Python 解释器 Shell 可以与 Vi(m) 集成吗?

    我喜欢使用 bpython 但在 Ruby 中 有一个名为 Interactive editor 的 gem 它可以将 Vi m 与 Ruby shell 结合起来 从而使开发过程更加舒适 Interactive editor 的一个很好的
  • 自动移动站点重定向

    我刚刚制作了我的第一个 jQuery 移动网站 我想让使用手机查看我的 完整网站 的人自动转移到 移动网站 如果需要 还可以单击链接查看完整站点 我不知道从哪里开始 有一些我可以使用的 JavaScript 吗 如果您想查看这些网站的外观
  • 在 iframe/对象标签内运行时更新初始路由器 url

    我目前正在容器 主 Vue 应用程序的对象标签 iframe 也可以工作 内渲染 Vue 应用程序 首先 我设置一个文件服务器 为该容器或请求的子应用程序提供服务 以在 div 内呈现 为了简单起见 我将仅显示 Node Express 服
  • Redis Cluster 与 Pub/Sub 中的 ZeroMQ,用于水平扩展的分布式系统

    如果我要设计一个巨大的分布式系统 其吞吐量应随系统中的订阅者数量和通道数量线性扩展 哪个会更好 1 Redis集群 仅适用于Redis 3 0 alpha 如果是集群模式 您可以在一个节点上发布并在另一个完全不同的节点上订阅 消息将传播并到
  • 无法为 Python 3.4 创建工作虚拟环境

    I 安装Python 3 4 2 https docs python org 3 using unix html building python和我的 Linux Mint 17 1 中的 Virtualenv 12 0 5 然后我尝试创建
  • 我是否可以通过第三方支付网关为我的 iPhone 应用程序提供付款服务?

    所以我有一个 RESTful Api 服务 它有免费和付费的东西 任何人都可以利用我们的 API 创建 iPhone Andriod MSPhone 应用程序 不好的类比 假设我们正在为 Steam 创建一个聊天 api 服务 并且您可以为
  • 从通用列表中删除项目

    我有以下方法 我希望从我的收藏中删除与产品 ID 匹配的项目 看起来相当简单 但我有一个例外 基本上我的收藏已经不同步了 那么从集合中删除项目的最佳方法是什么 public void RemoveOrderItem Model Order
  • 在最后修改的区域扩展Jtree?

    我正在使用 dom4j 从 dom4j 文档创建 DocumentTreeModel 我在里面显示这个 DocumentTreeModelJScrollPane 我有一个按钮 可以将新节点添加到 dom4j 文档 并重新创建 Documen
  • 元素不存在,尽管它具有 ID 属性

    在 selenium excel vba 中 我试图了解有关如何处理 CSS 选择器的更多信息 我很想知道 因为在检查带有 ID 的元素并运行代码时 我收到一条消息 指出未找到该元素 这是到目前为止的代码 Private bot As Ne
  • DC-sunburst、dc-Menuslect、dc-Non 交互图

    我是 dc js 的新手 我对 dc 的灵活性有一些疑问 首先 我一直在寻找答案 但还没有找到任何答案 1 我正在使用 dc sunburst 图表 我想知道是否可以创建 Zoomable sunburst 因为 d3 js 实际上就是这种
  • `printf()` 中格式说明符“%qd”的用途是什么?

    我看到格式说明符 qd浏览时github https github com Microsoft clang blob master test Sema format strings c代码 然后我检查了 GCC 编译器 它工作正常 incl