1.printf
%-20.10s:输出字符串,一共输出10个字符(多余的不输出),在20个字符的宽度内左对齐。
%-20.10f:输出小数,精确到小数点后10位,在20个字符的宽度内左对齐。当原小数精度不足时,会有数字补齐;刚刚满足时,末位会有出入;精度过大时,四舍五入。
同时,我注意到:float类型由于其存储方法,导致在有些情况下精度不高。在刚刚满足精度或精度不足时,在值上经常有出入。
2.特殊函数
字符类测试和转换,是宏,不是函数。
函数system(s)执行包含在字符串s中的命令,然后再返回执行当前程序。s中可包含的命令取决于系统。
3.scanf
scanf中不能打印字符串。如果需要提示用户输入的内容,先使用printf打印,再用scanf读取。
fscanf,sscanf,scanf主要用于读取ASCII文件的。读非ASCII文件请用fread。
*符:跳过该输入值。该输入项在读入后不赋予相应的变量。如scanf("%d %*d %d",&a,&b);当输入位:1 2 3时,1被赋予a,2被跳过,3赋予b。
scanf中没有精度控制。scanf("%5.2f",&a)在gcc下编译通过,可以运行,但a得不到输入的值。
C编译在碰到空格、TAB、回车或非法数据(如对"%d"输入“12A”时,A即为非法数据)时即认为该数据结束。
4.除运算符
参与运算的2个参数均为整型时,结果也为整型,舍去小数部分。
如果2个参数中有一个是实型,结果为双精度实型。
5.变量声明
在声明变量时,不允许连续给多个变量赋初值。
6.输出最小宽度
用十进制整数来表示输出的最少位数。若实际位数多与定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或0。
7.比较运算
判断语句if(0<a<10)总是为真。if(a>0 && a<10)才是正确表达。
8.条件运算符
结合方向是自右向左。
10.switch
各case和default子句的先后顺序可以变动,而不会影响程序执行结果。
在case或者default后,允许有多个语句,可以不用{}括起来。