在C语言程序的开发中,许多程序员喜欢使用 printf() 函数打印一些日志,便于观察和调整程序,因此, printf() 函数是一种使用频繁的函数。
有趣的问题
有趣的问题一般来说,所谓日志,其实就是一些字符串,printf() 为了方便将其他类型(字符串以外)的参数值集成到字符串中,函数提供了一些占位符,如占位符, %s, %d, %f, %p 等。
一个有趣的问题是,%s 可以添加字符串(string),%f 可以添加浮点数(float),%p 可以添加一个指针(pointer),这些占位符分别用相应英语单词的首字母表示,因此更容易记住。因此,常用于添加整数。 %d 为什么不按照呢? integer 的首字母 %i 呢?
添充整数的 %d 为什么不按照呢? integer 的首字母 %i 呢?
printf() 函数的占位符实际上,%d 里的 d 并不表示 integer,而是表示 decimal(10进制)。相似的。 %x 常用于打印 16 进制整数(hexadecimal), %o 常用于打印 8 进制整数(octal)。C语言程序开发中的整数显然可以随意进制。
调用 printf() 函数时,如果要打印一个整数,完全可以用%i作为占位符,以下是C语言代码示例:
#include编译和执行这个C语言代码,输出符合预期:
# gcc t.c# ./a.out5在许多C语言程序中, printf() 打印整数使用的占位符更多的是 %d,因为它更具体,它表明整数希望更符合人类习惯 10 进制导出。
相似的,调用 scanf() 当函数读取客户输入整数时,也可以一起使用 %i 和 %d,%i 占位符号表示客户输入整数将被分析为随机进制的整数(八进制、十六进制、十进制等)。 %d 意义更清楚——将整数分析为十进制整数。
让我们来看看C语言代码示例:
#includeC语言代码示例
编译并执行本段C语言代码,得到以下导出:
# gcc t1.c# ./a.out 10 10 a 1210 8 16 816 10 8我们专注于此 %d 和 %i 应该能够发现010的区别 这个数字正在使用 %d 占位符时,会分析为十进制 10,而使用 %i 占位符时,分析为十进制 8.类似的,其他异同留给读者自己体验。
本节主要讨论了一个有趣的问题,许多C语言新手刚刚接触到 printf() 函数占位符时,往往觉得这些占位符很难记住,其实它们大多是对应数据类型英语单词的首字母。因为C语言程序中的整数往往有不同的进制,所以更常用的整数占位符不是integer的首字母 %i,十进制整数具有更清晰的含义 %d,要理解这一点,占位符就很容易记住。
点个关注吧
欢迎在评论区讨论和质疑。文章都是手工原创的,每天最简单的介绍C语言、linux等嵌入式开发。如果你喜欢我的文章,请注意一波。你可以看到最新的更新和之前的文章。
扩展阅读读者在使用它们时,千万不要误认为它们是C语言提供的“输入输出语句”。printf和scanf不是C语言的关键字,而只是库函数的名字。不把输入输出作为C语句的目的是使C语言编译系统简单精练,因为将语句翻译成二进制的指令是在编译阶段完成的,没有输入输出语句就可以避免在编译阶段处理与硬件有关的问题,可以使编译系统简化,而且通用性强,可移植性好,在各种型号的计算机和不同的编译环境下都能适用,便于在各种计算机上实现。
输入和输出的操作是由库函数scanf和printf等函数来完成的。C语言对输入输出实行“函数化”。由于输入输出操作涉及具体的计算机设备,把输入输出操作用库函数实现,就可以使C语言本身的规模较小,编译程序简单,很容易在各种机器上实现,程序具有可移植性。
使用printf语句在程序的各个点打印变量的值和其他重要的信息。这可以帮助您了解代码中发生了什么,并识别出行为异常的变量。