计算机三级网络技术:重点理论知识(2)
4.各类运算符的用法
例如++、+=、\=、&&、>>等各类运算符的功能说明。
(1)在C语言中,基本运算符是:+、-、*、/、%,分别是加、减、乘、除、求余运算符。除求余运算符之外,运算
对象可以是整型,也可以是实型。
求余运算符的运算对象只能是整数。在%运算符左侧的运算数为被除数,右侧的运算符为除数,运算的结果是两数相除后所得的余数。当运算数为负数时,所得结果的符号随计算机有不同而不同。
说明:
①如果双目运算符两边运算数的类型一致,则所得结果的类型与运算数的类型一致。
②如果双目运算符两边运算数的类型不一致,系统将自动进行类型转换,使运算符两边的类型达到一致,再进行运算。
③在C语言中,所有实型数的运算均以双精度方式进行。若是单精度数,则在尾数部分添加0,使之转化为双精度数。
(2)强制类型转换表达式
其语句形式如下:
(类型名)(表达式)
(类型名)称为强制类型转换运算符,利用强制类型转换运算符可以将一个表达式的值转换成指定的类型,这种转换是
根据人为要求进行的。
(3)复合赋值表达式
在赋值运算符之前加上其他运算符可以构成复合赋值运算符。C语言规定可以使用l0种复合制赋值运算符,其中与算术运算有关的复合赋值运算符有:+=、-=、*=、/=、%=。复合赋值运算符的优先级与赋值运算符的优先级相同。
(4)自加运算符“++”和自减运算符“一”
①自加运算符“++”和自减运算符“一”,其运算结果是使运算对象的值增l或减l。
②运算符“++”和运算符“--”是单目运算符,运算对象可以是整型变量也可以是实型变量。但不能是常量或表达式,因为它不能给常量或表达式赋值。
③用自加运算符和自减运算符构成表达式时,既可以前缀形式出现,也可以后缀形式出现。以变量本身来说自增1或自减l都有相同的效果,但作为表达式来说却有着不同的值。例如,若变量i为int类型,且已有值5。若表达式为++i,则先进行i增l运算,i的值为6,表达式的值也为6;若表达式为~i,则先进行减l运算,i的值等于4,表达式的值也为4;若表达式为i++,则表达式先取i的值为5,然后i的值加l,使其值变为6,若表达式为i--,表达式先取i的值为5,然后i进行减1运算,使i中的值为4。
④自加运算符“++”和自减运算符“一”的结合方向是“自右向左”
⑤不要在一个表达式中对同一个变量进行多次诸如i++或++i等运算。
5.各种变量的类型定义说明
(1)整型变量
整型变量分为基本型、短整型、长整型和无符号型四种。
基本型的整型变量用类型名关键字int进行定义,例如:
一个定义语句必须以一个“:”结束。在一个定义语句中也可以同时定义多个变量,变量之间用逗号隔开。例如:
(2)实型变量
C语言中实型变量分为单精度型和双精度型两种,分别用类型名float和double进行定义。单精度型变量定义的形式如下:
双精度型变量定义的形式如下:
(3)字符变量
C语言中,字符变量用关键字char进行定义,在定义的同时可以赋初值。
字符变量在内存中占一个字节,可以存放ASCII字符集中的任何字符。当把字符放入字符变量中时,字符变量中的值就是该字符的ASCII代码值,所以字符变量可以作为整型变量来处理,可以参与对整型变量所允许的任何运算。
(4)指针变量
指针变量的定义一般形式如下:
6.结构体的基本概念
一个结构体类型可以由若干个称为成员(或域)的部分组成。结构体类型的一般形式为:
其中srtuct是关键字,是结构体的标志。“结构体标识名”和“结构成员名”都是用户定义的标识符,其中“结构体标识名”是可选项,在说明中可以不出现。每个“结构成员名表”中都可以含有多个类型的成员名,它们之间用逗号分隔。结构体中的成员名可以和程序中的其他变量同名;不同结构体中的成员也可以同名。
注意:结构体说明同样要以分号“;”结尾。
7.指针
(1)指针的基本概念
计算机的内存是以字节为单位的一片连续的存储空间,每一个字节都有一个编号,这个编号便称为内存地址。在C语言中,用来存放内存地址的变量称为“指针变量”。
定义指针变量的一般形式如下:
类型名 *指针变量名1,*指针变量名2,……;
说明:指针变量名前的星号(*)是一个说明符,用来说明该变量是指针变量。这个星号不能省略。
(2)指针的执行的基本流程
如下图1-22(a)所示,定义一个整型指针变量P,它本身的地址(2002)。若将整型变量a的内存地址(1012)存放到变量P中,这时要访问变量a所代表的存储单元,可以先找到变量P的地址(2002),从中取出a的地址(1012),然后再去访问以1012为首地址的存储单元,如图l.22(b)所示。
这种通过变量P间接得到变量a的地址,然后再存取变量a的值的方式称为“间接方式”。用来存放地址的变量称为“指汁变量”。