You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

scanf函数中"%i"与"%d"的区别是什么?二者是否相同?

scanf 中 %i 和 %d 的区别

二者完全不同,核心差异在于解析输入时的进制处理逻辑:

  • %d 仅以十进制解析输入,无视任何前缀。比如输入 012 会被解析为十进制的 12;输入 0x12 会只读取到 0(因为遇到非数字的 x 就停止解析)。
  • %i 会根据输入前缀自动识别进制:
    • 无前缀:按十进制解析
    • 前缀为 0:按八进制解析(比如输入 012 会被转换成十进制的 10)
    • 前缀为 0x/0X:按十六进制解析(比如输入 0x12 会被转换成十进制的 18)
printf 中 %i 的用途

在 printf 里,%i 和 %d 的作用完全一致,都是用来输出十进制的整数值。无论变量中的数值是以何种进制存储的,最终都会被转换为十进制格式打印出来。比如变量存储的是八进制的 012(对应十进制 10),用 %i 或 %d 打印的结果都是 10。

内容的提问来源于stack exchange,提问作者Haider Shah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 19:35:20