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中,而把换行符放回原处

…………………………

读完了