对于刚进入大学写代码的同学来说,把一个个字母,关键字敲进电脑,在让编译器执行,输出自己想要的结果,一定是一件开心又幸福的事情。
但是在写代码的过程中,对于刚刚接触代码的同学来说,是不可能写完了之后调试一遍过的,必然存在着这样或那样的错误。
我这里就在平时帮助同学找bug的过程总总结了一下同学们错误最大的一些地方。
一:pinrtf()
函数
这是咱们刚刚接触代码时候用到的第一个函数,也是咱们后期学习中用的最为频繁的函数,还记得第一次写代码往显示屏上面输出的"Hello World!" 吗?
printf(" Helolo World ");
这就是通过这个函数来执行的,也相当于在向全世界宣告:你好,世界,我来啦!
代码就是这样,被编译器赋予了生命,朝着你展现自己。
但是在后面,同学们会遇见printf()
函数的不同表现形式。比如
printf("%d", max); printf("max = %d\n", max); printf("%-10d", max);
printf("%c", c);
printf("%lf", num); printf("You Grade is %lf", num);
printf("%s", str); printf("你输入的名字是: %s", str);
像上面列出的你们一定在看书的过程中一定遇见过,仔细观察下函数里面的格式,一定都是
printf( " 字符1 ", 字符2 );
有没有注意到 双引号, 逗号, 还有逗号旁边的空白格里面的一些变量名,以及最后一个分号。这些都是构成这个函数的基本要素,缺一不可,错一也不可。
而同学们常常犯的错误就是上面说的每一个要素中的其中一个或多个:
printf("max = %d, max"); //分号把最右边的max也给包住了
printf("max = ", max); //没有%d(格式控制符)
printf("max = %d", max) //分号没有了
printf("max = %d"max); //逗号没了
这种错误的原因在于没有真正理解这个输出函数。
要理解这个函数,咱们先来看看这函数是怎么调用的
printf(" 格式化字符串 " , 参数列表);
这里的格式化字符串,里面有三种不同的形式。
一 是无格式的,没有格式就是普通的字符,可以是英文,也可以是中文,数字。而这些字符是按照原样输出在控制台上面,如:
printf("max = "); printf(" 最大的数字为: "); ...
二是 格式控制的,如:
int num1 = 5, num2 = 6; //初始化
char c = 'a';
char *str = "Hello World!";
printf("%d %d", num1, num2);
printf("%c", c);
printf("%s", str);
格式控制符写的格式是: 一个 %d + d, c, lf, f, s …
百分号 % 是格式说明引导符,相当于你告诉编译器,我将要输出一个类型数据啦!比如
后面接着的 d, 或者 c, lf, f。
%d 是对应着整形(int , long, short)<不带小数点的>
%f 是单精度类型(float)<带小数点的>
%lf 是双精度类型(double)<也是带小数点的,只是输出的范围比float要大>
%s 是字符串类型的
这些都不需要特意去记,用的多了自然就记住了。
细心的同学可能注意到了,在上一个例子中:
printf("%d %d", num1, num2);
这里有两个 %d 后面对应的是两个变量,也就是说,一个格式控制符对应的是一个变量,是不是有点像函数里面的一一对应关系呢?
是的,在输出的时候,一个格式控制符对应着后面 参数列表 中一个参数。
这里需要注意一点,格式控制符 和你声明的变量的数据类型也是对应的。
你不能声明了 int 类型的,却用 %lf 来输出。这是不规范也是会出错的。
就像拼图一样,一个空缺地方,你只能找一张图来印上去,这是对应的,其他的就不能这样,也就无法完成拼图这项操作。
三是转义序列,它的构成是由单斜杠 \ 和 n 或者 a, t 等…
如:
printf("max = %d \n", max); //打印后回车
printf("max = %d \t", amx); //横向跳到下一制表符位置
这些在写代码的过程中也会经常用到,它的合理使用,可以使得输出结果更加美观,比如在编写求1900-2000年中是闰年的年份时候,输出语句写成:
printf("%d \n", year); //每输出一个就换行一次
他这样输出的结果是:
数据与数据之间回车隔开,答案显得清晰明朗。但是若没有回车,直接是:
printf("%d", year);
那么输出结果虽然正确,但是数据之间无法辨别:
所以今后写代码,用到printf()函数的时候,合理运用空格,转义字符,或是其他如逗号,一些提示语句,可以使得数据更加好看,让自己看得懂,他人也看得懂。
在书上,还有一些如
printf("%7d", var1);
printf("%-7d", var2);
printf("%md", var3);
像这样格式的,表示的意思是输出指定字段的宽度,现在可以理解为输出一些空格用来隔开数据,如:
这个不需要去记忆,以后写代码的过程中用的次数也不是很多,了解下就行。
(如果有错误请指出)