首页 >后端开发 >C++ >C 中的 %i 与 %d:这些格式说明符何时不同?

C 中的 %i 与 %d:这些格式说明符何时不同?

Patricia Arquette
Patricia Arquette原创
2024-12-03 13:37:12379浏览

%i vs. %d in C: When Do These Format Specifiers Differ?

格式化 I/O 函数中格式说明符 %i 和 %d 之间的差异 (printf / scanf)

格式化 I/O 函数,如 printfscanf 利用转换说明符来控制数据在输入或输出期间的表示方式。在这些说明符中,%i 和 %d 通常用于整数。

输出的用法(%i 与 %d)

用作格式说明符时输出中,%i 和 %d 没有区别。两者产生相同的结果。它们表示十进制格式的整数值。

输入说明符

但是,当使用 %i 和 %d 作为输入说明符时,就会出现区别(在 scanf 中) )。主要区别在于:

  • %d:指定有符号十进制整数。它期望输入为以 10 为基数的数字(十进制)。
  • %i:默认行为类似于 %d(有符号十进制整数)。但是,它还有一个附加功能:它允许以其他基数输入,例如:

    • 十六进制:前面带有“0x”,它将输入解释为十六进制数。
    • 八进制:前面带有“0”,它将输入解释为八进制

实际示例

为了说明差异,请考虑输入字符串“033”。

  • 使用 %d:将其视为有符号小数整数,结果为值 33。
  • 使用 %i:由于输入以“0”开头,因此它会将其识别为八进制数。八进制的“033”值为 27。

总之,虽然 %i 和 %d 对于输出的行为相似,但它们对于输入的行为不同。 %i 通过允许十六进制和八进制输入来提供扩展功能,而 %d 严格限于带符号的十进制输入。

以上是C 中的 %i 与 %d:这些格式说明符何时不同?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn