更多课程 选择中心

C/C++培训
达内IT学院

400-996-5531

printf为什么用%d 而不是%i ?

  • 发布:C++培训
  • 来源:C++资讯
  • 时间:2020-11-13 14:58

C语言程序开发中,很多程序员喜欢使用 printf() 函数打印一些日志,便于观察和调整程序,因此 printf() 函数是一个使用相当频繁的函数。

一般来说,所谓日志,其实就是一些字符串,printf() 函数为了方便的将其他(字符串以外)类型的参数整合入字符串,提供了一些占位符,例如 %s, %d, %f, %p 等。

一个有趣的问题是,%s可以填充字符串(string),%f可以填充浮点数(float),%p则可以填充一个指针(pointer),这些占位符分别是用对应英文单词的首字母表示的,因此比较好记。那么常用于填充整数的%d为什么不按照 integer 的首字母 %i 呢?

printf() 函数的占位符

事实上,%d 中的 d 并不表示 integer,而是表示decimal(10进制)。类似的%x 常用于打印 16 进制整数(hexadecimal), %o 常用于打印 8 进制整数(octal)。C语言程序开发中的整数显然可以是任意进制的。

调用 printf() 函数时,若是希望打印一个一个整数,完全可以使用%i作为占位符,下面是一段C语言代码示例:

#include <stdio.h>

int main()

{

printf("%i\n", 5);

return 0;

}

编译并执行这段C语言代码,得到的的输出是符合预期的:

# gcc t.c

# ./a.out

5

在很多C语言程序中,使用 printf() 打印整数使用的占位符更多是%d,因为它更加具体,表明希望将整数以更符合人类习惯的 10 进制输出。

类似的,调用 scanf() 函数读取用户输入的整数时,也可以同时使用 %i 和 %d,%i 占位符意味着用户输入的整数将被解析为任意进制的整数(八进制、十六进制、十进制等),而 %d 的意义更加明确——将整数解析为十进制整数。

总结反思

很多C语言初学者在刚刚接触 printf() 函数的占位符时,常觉得这些占位符很难记忆,其实它们大都是对应数据类型英文单词的首字母。由于C语言程序中的整数常常有不同进制之分,因此更常使用的整数占位符不是integer的首字母 %i,而是具有更加明确含义的,也即十进制整数的 %d,弄清这一点,占位符就很好记了。

当你还在担心能否就业时,达内学员提前被企业录取;当你转辗于各大招聘会时,达内学员收到了高薪offer;当你在各大招聘网站投递简历时,达内学员中有人一毕业进入五百强名企。所以选择很重要。找C++培训班,选达内就对了。

版权声明:转载文章来自公开网络,版权归作者本人所有,推送文章除非无法确认,我们都会注明作者和来源。如果出处有误或侵犯到原作者权益,请与我们联系删除或授权事宜。

预约申请免费试听课

填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:C语言中的C怎么来的?
下一篇:稍有难度的C面试题你能解么?

C语言宏定义的几种使用方法

C与C++内存管理避坑指南

C/C++代码规范注释有哪些讲究?

C语言中,全局变量滥用的后果竟如此严重?

Copyright © 2023 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省