首页 > 后端开发 > C++ > C 格式化输入/输出函数中'%i”和'%d”之间的主要区别是什么?

C 格式化输入/输出函数中'%i”和'%d”之间的主要区别是什么?

Mary-Kate Olsen
发布: 2024-12-18 13:45:16
原创
547 人浏览过

What's the Key Difference Between `%i` and `%d` in C's Formatted Input/Output Functions?

理解转换说明符的细微差别:格式化 IO 函数中的 %i 与 %d

在格式化输入/输出领域 ( IO)函数如printf和scanf,转换说明符在指导输入或输出的格式方面起着关键作用。在这些说明符中,%i 和 %d 经常引起人们对其异同的疑问。

输出:统一存在

当用于输出操作时,例如与printf,%i 和 %d 的行为相同。它们始终以十进制格式表示整数。例如,以下代码片段演示了它们相同的输出:

int num = 123;
printf("Decimal representation (%%d): %d\n", num);
printf("Decimal representation (%%i): %i\n", num);
登录后复制

输入:独特行为

但是,当使用 scanf 或类似函数部署在输入操作中时, %i 和 %d 表现出明显的差异。 %d 仅将整数扫描为有符号十进制数。相反,%i 保留其十进制解释,但也包含十六进制(以 0x 为前缀)和八进制(以 0 为前缀)输入。

为了说明这种区别,请考虑以下示例:

int num;
scanf("%%d", &num); // Only accepts decimal input
scanf("%%i", &num); // Accepts decimal, hexadecimal, or octal input
登录后复制

如果用户输入 033,scanf 会将其解释为带有 %i 的 27(因为它将其视为八进制)并且33 和 %d(严格来说是十进制)。

总结...

虽然 %i 和 %d 在格式化 IO 中具有相似的用途,但它们的区别在于输入操作期间的行为。 %d 仅限于带符号的十进制输入,而 %i 可以无缝处理十进制和其他基本格式(十六进制和八进制)。这种理解对于根据程序的特定需求定制输入操作至关重要。

以上是C 格式化输入/输出函数中'%i”和'%d”之间的主要区别是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板