刚学C语言的时候,printf 肯定是大家经常碰到的函数。它的作用就是把内容打印、展示在屏幕上。一开始我们一般会见到这两种写法:
printf(“a的值是:10”);
int a = 10;
printf(“a的值是:%d”, a);
不少同学可能会疑惑:同样是打印出“a的值是:10”,这两种方式到底有什么区别?其实差别还挺大的。
第一种可以类比成数学题里直接给出的已知条件:“a的值是:10”。这只是一句固定写死的文字,程序运行的时候不会自己去检查变量,内容是不能在运行过程中自动变化的。
第二种就不一样了,有点像我们做题时存起来的计算结果:这个结果是可以在程序运行过程中更新的。就好比一开始算出 a 等于 10,后来发现算错了,把 a 的值改成了 11,打印出来的内容也会跟着变。
⚠️这里说的“可以更改”,指的是程序运行的时候能变,不是说我们写源代码的时候不能手动把 printf(“a的值是:10”); 里的10删掉、重新敲数字!手动改代码是另一回事。
那怎么在程序运行时让它自动变化呢?可以看这个例子:
int a;
a = 5;
printf(“a的值是:%d\n”, a);
a = 23;
printf(“a的值是:%d\n”, a);
运行后屏幕上会输出:
a的值是:5
a的值是:23
可以看到:程序执行到第四行,我们把变量 a 的值重新赋值成了23;第二次调用一模一样的 printf,它就会实时读取到 a 的新值,打印结果也就跟着变成23了。
所以两种写法最关键的区别,就是引号里有没有 %d。%d 叫做占位符:% 加上后面的字母,一起组成一个标记,告诉程序“这里要留出一个空位,运行时从外面拿对应类型的数据填进来”。不同的字母对应不同的数据类型,比如 %d 用来放整数。