做者 谢恩铭,公众号「程序员联盟」。 转载请注明出处。 原文:www.jianshu.com/p/497355a6b…git
《C语言探索之旅》全系列程序员
变量相关的内容有点多,通过上一课 C语言探索之旅 | 第一部分第五课:变量的世界(二),变量声明 ,今天咱们来学习变量的最后一个知识点:显示变量内容。github
在上几课中,咱们已经知道了如何用 printf 函数在屏幕上显示内容。但那时候还只是显示一些简单的文字,好比“Hello World”,“你好吗”,“饭吃了没”,等等。缓存
下面咱们来学习如何用 printf 函数来显示变量内容。bash
用 printf 来显示变量内容其实也是相似,只不过在咱们要插入变量内容的地方要用一个特殊符号代替,例如:函数
printf("你有 %d 只狗");
复制代码
这里的特殊符号实际上是 % 加上一个字母(上例中是 d),这个字母代表要显示什么类型,d 表示要显示整数。下表列出了一些经常使用的字母和对应的变量类型:学习
格式 | 类型 |
---|---|
%d | int |
%ld | long |
%f | float |
%f | double |
能够看到用于显示 float(单精度浮点数)和 double(双精度浮点数)的符号是同样的(由于说到底它们都是浮点数嘛)。测试
在适当的时候,咱们还会介绍其余的符号,暂时只须要记得这几个就够了。ui
咱们差很少要完工了。咱们在确切的位置指明了咱们要显示一个整数,可是咱们还没指定要显示哪个数。因此上面的代码还不完整,必须告诉 printf 函数咱们要显示的变量。spa
其实也很简单,咱们只须要在双引号后面再写一个逗号,在逗号后面写上咱们要显示的变量的名字,以下:
printf("你有 %d 只狗", numberOfDogs);
复制代码
程序运行时,printf 函数就会把 %d 替换成变量 numberOfDogs 的值了。
咱们用一个完整的程序来测试一下:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int numberOfDogs = 5; // 一开始,你有5只狗
printf("你有 %d 只狗\n", numberOfDogs);
printf("**** 跑了一只狗 ****\n");
numberOfDogs= 4; // 刚跑了一只狗,只有4只了
printf("啊呀,你只剩下 %d 只狗了\n", numberOfDogs);
return 0;
}
复制代码
运行以上程序,屏幕会显示:
你有 5 只狗
**** 跑了一只狗 ****
啊呀,你只剩下 4 只狗了
复制代码
很简单吧!
用一个 printf 函数也能够显示多个变量的值
以下
int main(int argc, char *argv[])
{
int numberOfDogs= 5, numberOfCats= 6;
printf("你有 %d 只狗,还有 %d 只猫\n", numberOfDogs, numberOfCats);
return 0;
}
复制代码
运行,输出:
你有 5 只狗,还有 4 只猫
复制代码
从如今开始,变量对咱们会愈来愈重要,也会愈来愈有意思。
咱们来学习这一课的最后一个知识点:如何提取用户输入的值,并将其储存到变量里面。
为了可以让用户在控制台输入,咱们须要借助另外一个函数:scanf 。
这个函数和 printf 函数算是一对,用法有点相似。scanf 负责输入,printf 负责输出。
给出一个 scanf 使用的例子:
int numberOfDogs = 0;
scanf("%d", &numberOfDogs);
复制代码
是否是和 printf 很相似呢,可是咱们注意到了,numberOfDogs 前面多了一个 & 符号。为何 printf 里面变量名前不须要这个符号而 scanf 却须要呢?
回答是:这个符号的做用暂时没必要深究,知道 scanf 是这样用就好,之后的课程咱们再一块儿学习。相信我,若是咱们必定要讲的话,今天的课就结束不了了。
scanf 和 printf 函数还有一点差别:
对于 float 和 double 来讲,printf 里面他们的替代符号都是 %f, 可是在 scanf 里面却不同。在 scanf 中,float 是 %f,而 double 是 %lf 。
例如:
double sum = 0;
scanf("%lf", &sum);
复制代码
下面是一个完整的例子,演示如何用 scanf 提取用户输入,存储到变量中,再用 printf 函数输出变量的值:
int main(int argc, char *argv[])
{
int sum = 0; // 把钱数初始化为零
printf("你身上有多少钱 ? ");
scanf("%d", &sum); // 请求用户输入钱数
printf("你有 %d 块钱啊,那还不快快地交出来 !\n", sum);
return 0;
}
复制代码
运行,程序会先显示“你身上有多少钱 ?”,而后光标会停在后面,等待用户输入;用户输入数据以后,按回车,printf 那句话才会显示,以下:
你身上有多少钱 ? 12000
你有 12000 块钱啊,那还不快快地交出来 !
复制代码
好了,你应该已经明白了大体的原理。多亏了 scanf 函数,咱们的程序能够和用户交互啦!
还要注意 scanf 的一个“任性”的地方,就是虽然上例中咱们指定了用户输入整数类型,可是假如用户输入的是其余类型,scanf 也不会出错:
好比说用户输入 5600.45,这是一个浮点数,不是整数,可是 scanf 仍是会将其读入,可是储存在 sum 变量里的数会变成 5600(舍去了小数部分,只保留整数部分)。
一样的,假如用户输入一些奇怪的字符,例如:g^b@&*
,那变量 sum 的值就不会变,仍是它的初始值(上例中是 0,由于咱们初始化 sum 为 0, 假如没有初始化,那 sum 的值会是任意的)。
“变量的世界”系列终于结束了,咱们回顾一下重要的知识点:
咱们的电脑有好几种不一样的存储器类型,从速度最快到最慢排序是:寄存器,高速缓存,内存,硬盘。
硬盘中的数据不会随电脑关机而消失,其余三类存储器都是暂时性的储存。
为了存储信息,咱们的电脑须要把数据存放在存储器里,通常暂时的数据都是存放到内存里,固然也可能存放到寄存器或者高速缓存中,咱们不用操心,电脑自会分配。
在咱们的源代码中,变量指的是暂时存放在内存中(主要),在程序运行期间值会改变的数据。
咱们也有 constant 变量(只读变量,不是常量),值在程序运行期间不会改变。
变量有好多类型,每种类型在内存中所占据的空间大小不同。通常来讲,int 类型是声明整数的首选,而 double 类型是声明浮点数的首选。
scanf 函数使用户能够输入数据,printf 函数输出数据。
今天的课就到这里,一块儿加油吧!
我是 谢恩铭,公众号「程序员联盟」运营者,慕课网精英讲师 Oscar 老师,终生学习者。 热爱生活,喜欢游泳,略懂烹饪。 人生格言:「向着标杆直跑」