C语言基本概念
我们所写的C程序需要转化为机器可以执行的形式。通常需要3个步骤。
-
预处理preprocessor
一个.C的文件所经过的第一个处理是预处理。
预处理器执行以#开头的指令。预处理器像一个自动编辑器,它给程序添加指定的内容,也可以对程序进行修改。
-
编译compiler
经过预处理的程序进入编译器。编译器把程序翻译成机器指令,也就是目标代码。此时的结果还是不能运行的。
还需要第三步:链接。
-
链接linker
链接器把编译器产生的目标代码跟所需要的其他附加代码整合在一起,生成最终完全可执行的程序。附加代码包括程序中用到的库函数(比如,printf函数)。
预处理器通常会和编译器集成在一起。
Unix系统下,C编译器通常是cc。
Linux系统下,C编译器通常是gcc.
float类型,floating-point,是一种存储数值的方法,数值中的 小数点是浮动的。float型的数值被分成两部分存储:小数部分和指数部分。比如,12可以用1.5X2^3的形式存储,其中1.5是小数部分,3是指数部分。float类型的常量要以f结尾。包含小数点但不以f结尾的常量是double(double precision)型的.double比float更精确,可以存储比float型更大的值。因此在给float型变量附值时需要加上字母f.
C语言标准中说标识符也就是变量的名字可以任意长。
缩进两个空格,有助于识别程序嵌套。
编译器是如何处理注释的?用一个空格字符替换每条注释语句。
如何发现未终止的注释?可以使用lint工具。某些开发环境会使用特别的颜色把注释和其他代码区分开来。
在C程序中,两个整数相除结果是向下取整。如果要向上取整,需要将除数加上被除数减1.
Hornor法则,修改后的程序所需的乘法次数减少了。
声明:在使用变量之前必须对其进行声明,也就是为编译器做出描述,需要指定变量的类型,和变量的名字。
常量:通常采用宏定义(macro definition)的特性给常量命名
#define PI 3.14159f
#define是预处理指令,类似于#include. 当对程序编译时,预处理器会把每一个宏替换为其表示的值。
也可以用宏来定义表达式,当宏包含运算符时,必须用括号把表达式括起来。
%.1f表示,小数点后面只显示一位数字。
Token(记号)包括哪些?标识符,关键字,运算符,标点符号,字符串字面量。
GCC的参数:
-Wall 使编译器在检测到可能的错误时生成警告消息。最好与-o结合使用。
-W 除了-Wall生成的警告消息外,还需要针对具体情况的额外警告消息。
-pedantic 根据C标准的要求生成警告消息。这样可以避免在程序中使用非标准特性。
-ansi 禁用GCC的非标准C特性,并且启用一些不太常用的标准特性。
-std=c89或-std=c99 指明使用哪个版本的C编译器来检查程序。
main()r函数中的return语句不是必需的,如果没有return语句,程序照样终止。