23. C 语言,%d 和 %i的区别

在 C 语言中,%d%i 都用来打印十进制整数。虽然它们在大多数情况下是可以互换使用的,但还是有一些细微的区别,特别是在解析输入时:

%d%i 的区别

  1. 打印时的区别

    • 对于打印整数的操作,%d%i 没有区别。它们都可以用来输出十进制整数。
    c 复制代码
    #include <stdio.h>
    
    int main() {
        int number = 123;
        printf("Using %%d: %d\n", number);
        printf("Using %%i: %i\n", number);
        return 0;
    }

    上面的代码输出将是:

    复制代码
    Using %d: 123
    Using %i: 123
  2. 输入时的区别

    • 当使用 scanf 函数读取整数输入时,%i 可以识别不同的进制(十进制123、八进制0 12、十六进制0x 12),而 %d 只能读取十进制数。
    c 复制代码
    #include <stdio.h>
    
    int main() {
        int num;
        printf("Enter an integer (use 0x for hex, 0 for octal): ");
        scanf("%i", &num);  // Using %i for input
        printf("You entered: %d\n", num);  // Output in decimal
        return 0;
    }
    • 如果用户输入 0x1A%i 会将其识别为十六进制数(26 的十进制表示)。如果用户输入 012%i 会将其识别为八进制数(10 的十进制表示)。而 %d 只会读取十进制数,因此 0x1A012 输入时会被视为无效。

总结

  • 打印时 : %d%i 功能相同,都用于输出十进制整数。
  • 输入时 : %i 更灵活,能够识别不同的进制(十进制、八进制、十六进制),而 %d 仅用于读取十进制整数。
相关推荐
萌动的小火苗17 小时前
1、python基础面试题
java·开发语言·python
运维行者_17 小时前
网络监控与ITSM集成:从告警到工单,实现运维自动化闭环
开发语言·网络·分布式·后端·架构·flask·php
小叮当爱咖啡18 小时前
Day3.参数+Prompt三板斧
开发语言·python·prompt
yunwei3718 小时前
eBPF 教程:精准隔离已建立的 TCP 连接
linux·安全·开源
菜冻鱼18 小时前
Python-pandas-索引与筛选
开发语言·笔记·python·numpy·pandas·学习方法
weixin_4454766818 小时前
linux下lims部署详细步骤参考
linux
鹿角片ljp18 小时前
Java面试复盘(二):String不可变、字符串常量池与字符串拼接
开发语言·python
小秋求学记.19 小时前
PHP安全漏洞实战:从环境配置到RCE攻击
开发语言·php
阿米亚波19 小时前
【C/C++包管理器】vcpkg(by microsoft)
c语言·c++·git·vscode·microsoft·github·vcpkg
看浪的路人20 小时前
第3讲:代码补全引擎
开发语言·windows·python