任何高级语言都有自定义的词法符号和支持的数据类型。
词法符号是语言的基本组成单位,数据类型是数据的基本属性。这里我将先对C语言的C法符号做一个小的总结,既是对我自己C语言的一个系统的整理与提高,也希望对希望提高C语言有所帮助,对于数据类型我将在随后一段时间总结介绍。
词法符号是程序设计语言中有若干字符组成的有意义的最小语法单位。
按照词法符号在程序中的作用可以分为:关键字、标识符,分隔符、运算符和标点符。
1.1关键字:是由系统预定义的词法符号,有特定的含义,不允许用户重新定义,所以在定义标识符的时候不能与关键字重名。基本的关键字有32个,分别如下:
C语言关键字分为两个大的类型,其中两种大的类型又分为七种小的类型:
void:声明函数无返回值或无参数,声明无类型指针,显式丢弃运算结果
char:字符型类型数据,属于整型数据的一种
int:整型数据,通常为编译器指定的机器字长
float:单精度浮点型数据,属于浮点数据的一种
double:双精度浮点型数据,属于浮点数据的一种
short:修饰int,短整型数据,可省略被修饰的int。
long:修饰int,长整形数据,可省略被修饰的int。
signed:修饰整型数据,有符号数据类型
unsigned:修饰整型数据,无符号数据类型
struct:结构体声明
union:共用体声明
enum:枚举声明
typedef:声明类型别名
sizeof:得到特定类型或特定类型变量的大小
auto:指定为自动变量,由编译器自动分配及释放。通常在栈上分配。
static:指定为静态变量,分配在静态变量区,修饰函数时,指定函数作用域为文件内部。
register:指定为寄存器变量,建议编译器将变量存储到寄存器中使用,也可以修饰函数形参,建议编译器通过寄存器而不是堆栈传递参数。
extern:指定对应变量为外部变量,即在另外的目标文件中定义,可以认为是约定由另外文件声明。
const:与volatile合称“cv特性”,指定变量不可被当前线程/进程改变(但有可能被系统或其他线程/进程改变)。
volatile:与const合称“cv特性”,指定变量的值有可能会被系统或其他进程/线程改变,强制编译器每次从内存中取得该变量的值。
return:用在函数体中,返回特定值(或者是void值,即不返回值)
continue:结束当前循环,开始下一轮循环
break:跳出当前循环或switch结构
goto:无条件跳转语句
if:条件语句
else:条件语句否定分支(与if连用)
switch:开关语句(多重分支语句)
case:开关语句中的分支标记
default:开关语句中的“其他”分治,可选。
for:for循环结构,for(1;2;3)4;的执行顺序为1->2->4->3->2...循环,其中2为循环条件
do:do循环结构,do 1 while(2);的执行顺序是1->2->1...循环,2为循环条件
while:while循环结构,while(1) 2;的执行顺序是1->2->1...循环,1为循环条件
以上循环语句,当循环条件表达式为真则继续循环,为假则跳出循环。
以上各种类型的关键字的用法在这里就不再详细的介绍了。相信随着大家对C语言的深入了解后都会碰见的。
1.2标识符:标识符是由程序员按照命名规则自行定义的词法符号,用于宏定义、变量名、函数名和自定义类型名等。其命名规则如下:
1)、标识符由一个或多个字母、数字或下划线组成;
2)、标识符的第一个字符必须是字母或下划线;
3)、标识符不能与任何关键字相同;
1.3 分隔符:包括逗号、空白符、分号和冒号。
1.4运算符:表示运算的词法符号,C语言有着非常丰富的运算符,按其功能分,如下表:
其中特别要注意:
1)、算术求余运算不支持浮点运算,整除运算符“/”两边的操作数都为整数时其值才取整数;
2)、关系运算符"=="、">="、"<="、"!="中间不能有空格。还要特别注意不要把"=="与赋值运算符"="等同,"=="表示判断左右两边是否相等;
3)、一定要留意位运算符"&&"、"||"短路特性;
4)、位运算符的运算对象必须是整数,浮点类型的不支持位运算;
5)、在扩展的赋值运算符如"&="等间没有空格符号;
6)sizeof是32个关键字中的一种,看到sizeof()不要认为就是函数;
大概的将C语言运算符中需要注意的都一一列举了下,难免有不全之处,望不吝赐教!^-^
1.5标点符:
C语言中的标点符共有13个,即:[ ] () { } * ,: = ;… # &(取地址)->(指向) .