首页 >后端开发 >C++ >C 的'printf”和'scanf”中的'%i”和'%d”格式说明符之间的主要区别是什么?

C 的'printf”和'scanf”中的'%i”和'%d”格式说明符之间的主要区别是什么?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-03 00:44:09578浏览

What's the Key Difference Between `%i` and `%d` Format Specifiers in C's `printf` and `scanf`?

理解格式说明符 %i 和 %d

使用格式化输入/输出函数(如 printf 时)和 scanf,格式说明符在控制类型方面起着至关重要的作用要打印或读取的数据。其中,说明符 %d(整数)和 %i(整数)值得仔细考虑。

printf 中的使用

对于输出操作,没有功能差异在 %d 和 %i 之间。两者都会输出一个带符号的十进制整数。例如,使用 %d 或 %i 与整数值 100 将得到字符串“100”。

scanf 中的用法

但是, %d 和 %i 在输入操作中变得明显。虽然 %d 严格扫描带符号的十进制整数,但 %i 支持十进制、十六进制和八进制格式。

  • 十进制(默认): %d 和 %i 都接受十进制数字序列(例如 123、 -45).
  • 十六进制: 如果前缀为“0x”(例如 0x123),%i 允许以十六进制格式输入。另一方面,%d 会将“0x”视为整数字符串的一部分。
  • 八进制: 类似地,如果前缀为“0”(例如 033),%i 支持八进制输入)。相反,%d 会将“033”解释为十进制整数。

为了说明差异,请考虑以下示例:

scanf("%i", &number);

如果用户输入“033” , %i 将其解释为八进制数并将值 27 分配给变量“number”,而 %d 将分配 33。

以上是C 的'printf”和'scanf”中的'%i”和'%d”格式说明符之间的主要区别是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!

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