1.汇编语言(Assemble Language)是一种中间语言,它是一种程序设计语言,但比较容易翻译成机器代码,且容易被人学会和读懂。
2.人们把机器语言和汇编语言称为低级语言,把以后发展起来的语言称为高级语言。低级语言并不比高级语言“低级”,而是说它与计算机硬件的距离的级别比较低。
3.美国国家标准协会(American National Standard Institute,ANSI)成立了C标准委员会,建立C语言的标准。1989年,ANSI发布了第一个完整的C语言标准——ANSI X3.159——1898,简称“C89”,人们也习惯称其为“ANSI C”.1999年,国际标准组织ISO(International Organization for Standardization)发布了新的C语言标准,命名为“C99”,之后,C语言的反正基本停止。
4.C语言的万能源于它的简单,灵活,对各种需求的适应性强。适应性和专用性是一对冤家对头,这就注定了C语言很难专用化。另外,C语言距离机器代码比其他高级语言更近。因此也有人把C语言看成唯一的介于低级语言和高级语言之间的语言。
5.C++,这个“++”加上的,是大名鼎鼎的“面向对象(Object Oriented)”。Java以纯面向对象、平台无关性和易学易用而著称,但在做底层,占用资源少的程序方面,java无能为力。
6.编译运行时最经典、效率最高的运行方式。用编译语言开发一个软件所要经历的过程是:编辑(Edit),编译(Compile),链接(Link)和运行(Run)。
还有一种被大量采用的程序运行方式,叫做解释运行。最具有代表性的是BASIC,JavaScript,VBScript,PHP,ASP,Perl和Python。这些语言的共同特点是运行速度慢,但简单。
7.计算机内存的每个单元都被分配了一个唯一的整数,叫做地址。知道了数据所在的地址,就知道了数据的存储位置。程序指令存储在内存中,所以它也有地址。
8.对int型使用signed是允许的,但却是冗余的,因为默认的int型定义为有符号整数。signed的最重要的用途是在char类型默认为无符号时,使用signed修饰char,表示有符号字符型。 另外,signed和unsigned也可以用来修饰long int 和short int ,但是不能修饰double和float。
9.有符号数和无符号整数直接的区别在于怎样解释整数的最高位。对于无符号数,其最高位被C编译程序解释为数据位,而对于有符号数,C编译程序将其最高位解释为符号位,符号位为0,表示该数为正;符号位为1,表示该数为负。有符号数整数中的最大数的绝对值只有最大无符号整数的一半。
10.二进制补码(Complement)的概念
11.0的原码表示不是唯一的,双字节整数型 +0的原码是00000000 000000000,-0的原码是100000000 000000000,补码都是00000000 00000000
12.无符号整型常量由常量值后跟U或u来表示,如30u,255U等,但不能表示成小于0的数,如-30u就是不合法的。对于无符号长整型常量由常量值后跟LU,Lu,IU或lu来表示。
13.宏常量 #define 标识符 字符串
只是一种简单替换,替换时候不做任何语法检查,还有,分号问题。
14.枚举(Enumeration) 枚举数据类型(Enumeration Data Type)描述的是一组整型值的集合,可用关键字 enum来定义这种类型。
例如:enum response{no,yes,unsure};
enum response answer;
在枚举类型声明语句中,包括在大括号在内的标识符均为整型常量,成为枚举常量。除非特别声明,否则这组常量中的第一个标识符的值为0,第二个标识符的值为1,第三个标识符的值为2,以后依次递增1.
15.变量名是由用户定义的标识符,用于标识内存中一个具体的存储单元,在这个存储单元中存放的数据成为变量的值。const类型修饰符必须放在它所修饰的类型名之前,用const修饰的标识符为常量,编译程序将其放在只读存储区。
16.与用#define定义的宏常量相比,const常量的优点是什么?
(1)const常量有数据类型,而宏常量没有数据类型。编译器对const常量能够进行类型检查,而对宏常量则只进行字符串替换,不进行类型检查,字符串替换时极易产生意象不到的错误。
(2)有些集成化的调试工具可对const常量进行调试,而不能对宏常量进行调试。
17.使用变量时的注意事项
(1)使用变量的基本原则:先定义,后使用
(2)注意区分变量名和变量值的概念 变量名标识内存中一个具体的存储单元,变量值则是存储单元中存放的数据。
(3)int型变量隐含的修饰类型 定义整型变量时,只要不指定为无符号型(unsigned),其隐含的类型就是有符号型(signed)
(4)用sizeof获得类型或变量的字长(所占存储空间的大小)
char型数据在任何情况在内存中都只占1 个字节。int型数据通常与程序的执行环境的字长相同,对于16位环境(如DOS下的Turbo C2.0),int型数据在内存中占16位,即2个字节,对于大多数32位换,如Windows NT/2000/XP/2003,int型数据在内存中占32位,即4个字节。short int 始终是2个字节,long int始终是4个字节,float始终是4个字节,double始终是8个字节。保险起见,sizeof()是C语言提供的专门用于计算类型字节数的。例如,计算int型数据所占内存的字节数用sizeof(int)计算即可。
(5)注意实型数据内存存储格式的特殊性
对于实数,无论小数表示形式还是指数表示形式,在计算机内部都用浮点方式来实现存储。浮点方式是相对于定点方式而言的的。通常,浮点数表示是将实数分为阶码和尾数两部分。N = S * 2 j。其中,阶码j所占的位数决定实数的取值范围;尾数S所占的位数决定实数的精度,尾数S的符号决定实数的正负。
(6)注意char型数据与int型数据之间的关系
一个int型数据在内存中是以二进制形式存储的,而一个字符在内存中也是以其对应的ASCII码的二进制形式存储的,只是在内存中所占字节数不同而已。char型数据占一个字节,而int型数据在16位环境下占2个字节,在32位环境下占4个字节。因此,在C语言中,只要在ASCII码取值范围内,char型数据和int型数据之间的相互转换不会丢失信息。这也说明char型常量可以参与任何int型数据的运算。小写字母-大写字母=32 A65
(7)注意实型变量数据的舍入误差
在一般系统中,float型数据只提供7位有效数字,double型数据则提供16位有效数字
18.运算时,当其中一个操作数为实数,则整数与实数运算的结果为double型。余数的符号与被除数的符号相同。
19.只要表达式的值为非0,就表示关系成立(真);反之,为0则表示关系不成立(假)。
20.m = (-n)++; 是错误的。因为运算符++的运算对象只能是变量,不能是表达式,对一个表达式使用增1/减1运算是一个语法错误
21.误将表达式(float)m/2写成float(m)/2或float(m/2)都是错误的,另外,(float)m这种强制运算不可以改变变量m的类型是数值。