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 只会读取十进制数,因此 0x1A 或 012 输入时会被视为无效。

总结

  • 打印时 : %d 和 %i 功能相同,都用于输出十进制整数。
  • 输入时 : %i 更灵活,能够识别不同的进制(十进制、八进制、十六进制),而 %d 仅用于读取十进制整数。
相关推荐
临床数据科学和人工智能兴趣组7 分钟前
正则表达式的基础语法的基本符号
开发语言·人工智能·python·正则表达式·r语言·r语言-4.2.1·workbudyy
王中阳Go12 分钟前
Go 后端转 AI:非科班怎么补?一张 3 列路线表(可保存)
开发语言·人工智能·后端·python·golang·大语言模型
Fcy64821 分钟前
Linux下 五种IO模型的认识与⾮阻塞IO的实现
linux·服务器·io
geats人山人海34 分钟前
java 4继承
java·开发语言
Mikko71 小时前
Linux 重启后日志没了?进程被 OOM 杀了去哪看?logrotate 之后日志还往旧文件写?三台真机实测日志与性能排查
linux·运维·centos
aqiu1111111 小时前
【C++算法打怪专栏】C++ `unordered_set` 常用初始化与插入方法总结
开发语言·c++·算法
书生执笔画浮沉1 小时前
分享一个开源小工具CAdapt
linux·c·gnu·glibc·kernel·升级·灵感
众链网络1 小时前
Agent 的成本大头不在“写“,在“判断“:拆解专用决策模型的三层架构
java·开发语言·人工智能·微服务
周小董1 小时前
[1371]jdk管理工具
java·开发语言
Terra.K1 小时前
高精度阶乘求和模板深度解析
开发语言·c++·算法