bite集训营
5/30
每周一点课程回顾以及知识总结(对于别人真的没什么用 :-(
1、除号/两边都是整型的话,会执行整型除法,%f无法正常输出,只有当除号两边有一个为小数时,%f才能正常输出。
注:小数点位数过多,可以通过%.2f来减少小数点位数,且会四舍五入。
2、取余运算两边必须是整型。
3、++a,与a++的区别?
如果只是单纯自增的话,二者没有区别,在涉及赋值操作时,有很大区别,如图。
a先将值赋值给b,然后a再自加1;而A先完成自加,再将自加后的A值赋值给c,得到如图结果。
同理a--和--a。
4、复合赋值符
本质上是相同的,上着对于新人容易理解,而后者对于熟练者更优先考虑,同理-=、*=、/=、%=等等
5、有关printf函数
①:%d、%c、%s等等,这类被称为占位符,可以被其他值代入。
②:在printf函数中,字符串用双引号引出,字符用单引号,整型直接输入。按占位符顺序输入,数据类型要一一对应
③:
%12f,数字12指最小宽度,若要打印的数据位数不够会加空格,由于浮点型数据默认小数后六位,所以上一个输出中,3前面多了四个空格,若将小数点改成后三位,3前面就多了六个空格,直到打印的数据宽度为12。%-12f会在后面加空格
④:限制宽数和限制小数点的数可以是变量,通过%*.*的方式来实现,不要忘了在最后加上需要打印的数据
⑤:让数据总是显示正负号,可以通过%+d来得到。
⑥:输出部分字符串的方式,通过%.5s的方式来控制输出字符串的个数。
⑦:%5d,表示最小宽度为5位,如果不满5位,对应值的前面会添加空格
6、有关scanf函数。
①:scanf用于读取用户键盘输入,在用户输入数据并按下回车后,scanf才会开始处理信息,其中&指去地址符号,将输入的值,送到变量中。
②:scanf中的占位符目的是为了让scanf函数如何去解读用户输入的数据,只有当scanf()提前知道用户输入的数据类型时,才能够处理数据
因为%d,系统认定数据类型为整型,即使输入double类型数据,系统也会以整型的方式输出,强行数据类型会出错
③:Scanf处理数值占位符时,会自动过滤空白字符、包括回车、制表符、换行符(除%c, 因为空格也是字符,若在强制跳过空格,则在 %c加入空格(”空格%c”),表示跳过零个或多个空格)
打印字符时,因为空格也算字符,所以scanf会解读出空格,而在scanf函数中,%c前加入空格后,在调制界面中即使输入再多空格,系统最终也能解读出我们输入的字符。
④:scanf原理:用户的输入先放入缓存,等到按下回车键,按照占位符对缓存进行解读。解读输入时,会从上一次解读遗留的第一个字符开始,直到读完缓存,或者遇到第一个不和条件的字符为止
第一次输入时,解读的数据类型为整型,所以读到.停止,剩下的数据仍在缓存内,第二次以浮点型数据类型继续解读,直到#停止,因为缓存中一直有数据存在,所以不会执行第二次scanf,只有当每次的数据类型输入正确是,系统才会解读完缓存中的数据,从而可以输入新的数据,如图
⑤:数组名本来就是地址,数组名是数组首元素的地址,因此scanf函数中,数组名前不用加&
⑥:Scanf在读取数据,并且存放时,不会检测空间是否合适,因此在读取数组时,需要定 义空间的大小,使读取过程安全 %[m]s 括号中表示读取字符串的最大长度,超过部分舍弃
⑦:Scanf(“%d_%d_%d_%d”),在调试界面时,用户输入的格式得和括号一致时,系统才能正常读取。
注:为了使任何输入方式都能够正确,可以使用scanf (“%d%*c$d%*c%d”,&year,&month,&day)
%*c不会影响后面year,month,day,系统在读取过程中,会忽略%*c。
7、系统如何区别float和double类型数据 ?
系统会将0.0f 判断为float类型数据 ,而将0.0判断为double类型