1:浮点型(float)运算比int慢,并且可能存在舍入误差
如float存储0.1,以后使用可能会变成0.099999999987
2:宏定义只用大写,这是大多数C程序猿遵循的规范!
C语言区分大小写,,基本遵循在标识符中只使用小写字母的规范
如:symbolTable,currentPage表示,有时也可这样SymbolTable, CurrentPage
3:GCC有多个命令行选项来控制程序检查的彻底程度
-Wall 使编译器在检查到可能的错误时生成警告消息。与-o结合使用
-W 除了-Wall生成的警告消息外,还需要针对具体情况的额外警告消息
-pedantic 根据C标准的要求生产警告信息,可避免在程序中使用非标准特性
-ansi 禁用GCC的非标准特性,并启用一些不太常用的标准特性
-std=c89或-std=c99 指明使用哪个版本的C编译器来检查程序
4:根据C标准,编译器必须用一个空格字符替换每条注释语句
如:a/**/b=0;
可能会变成a b=0的错误
5:
#include <stdio.h> int main(void) {int i;float x;i=40;x=839.21f;printf("|%d|%5d|%-5d|%5.3d|\n",i,i,i,i);printf("|%10.3f|%10.3e|%-10g|\n",x,x,x);return 0;//注意空行的留取处 }
输出这些东西,负号左对齐,正号右对齐
6:转义字符
\n 换行
\t 制表
\b 退格
\r 回车
\\ 表示反斜杠“\”
\' 表示单引号
\" 表示双引号
\ddd 1到3位八进制所代表的字符
\xhh 1到2位十六进制所代表的字符
printf("\"Hello!\"");输出“Hello!”
+++++++++++++++++++++++++++++++++++++++++
7:scanf
对于以下语句:scanf("%d%d%f%f",&i,&j,&x,&y);
假设用户录入3行
1
-20 .3
-4.0e3
scanf会把他们当做一个连续的数据流:
1 -20 .3 -4.0e3
因为scanf会在寻找每个数的起始位置时跳过空白字符,所以可以成功读取
当输入这一串便一样的时候是否可以正常读取呢?
1-20.3-4.0e3
答案是可以
下面列出了如何读取的:
a:转换说明符%d,第一个非空的输入字符是1;因为整数可以从1开始,所有scanf函数接着读取下一个字符,即 - ,scanf函数识别出 -
不能出现在整数内,所以把1存入变量 i 中,而把字符 - 放回原处
b:转换说明符%d,随后,scanf函数读取字符 - ,2、0和 . 。因为整数不能包含小数点,所以scanf把-20存入变量 j 中,而把字符 . 放回原处
c:转换说明符%f,接下来scanf读取 . 3 和 - 。因为浮点数不能在数字后边有负号,所以scanf函数把0.3 存入变量x中,而把字符 - 放回原处
d:转换说明符%f,最后,scanf函数读取字符 - 4 . 0 e 3 和换行。因为浮点数不能包含换行符,所以,scanf函数把-4.0X10^3存入变量y中,而把换行符放回原处
…………………………
读完了