2015年软件水平考试程序员之程序设计知识要点(6)
发布时间:2012/4/28 15:24:27 来源:城市网学院 编辑:ziteng
2.4 运算符
每个运算符都代表对运算对象的某种运算,都有自已特定的运算轨则,划定运算对象的个数、运算对象数据类型,以及运算结不美不美观的数据类型。C措辞还划定运算符有不合的优先级和连络性。运算符的优先级指表达式求制瘫,按运算符的优先级由高到低的挨次计较。如“先乘除后加减”。运算符的连络性是指运算符要求它的运算对象对它的连络标的目的。连络性确定了在不异优先级运算符持续呈现的气象下运算对象与运算符连络的挨次,凡是也是计较挨次。如算术运算符的连络性是从左至右的,则持续的加减或持续的乘除是从左向右计较。而赋质ё僮偎算符的连络性是从右至左的,则持续的赋质ё僮偎算是从右向左逐个计较赋值。在C措辞中,要出格注重某些运算符因运算对象数据类型不合,可能有不合的意义。
1.算术运算符
算术运算符的运算对象是根底数据类型的数据,实现凡是的取整、取负、四则运算、求两整数相除后的余数的运算和增1减1运算。出该属心的是整除运算、求余运算、增1运算和减1运算。
对两个整型数据执行除运算(/),称为整除运算,要出格注重的昵嘟个整型数据的整除运算的结不美不美观是整型的,如表达式3/2的结不美不美观为1,表达式2/3的结不美不美观为0。
求余运算符(%)要求介入运算的两个运算对象均为整型数据,如 5% 3的值为 2。一般来说,求余运算所得结不美不美观的符号与被除数的符号不异。如-5%3的值为-2,5%-3的值为2。
增1(++)和减1(--)运算符都是单目运算符,以整型、字符型和指针型变量为运算对象,并改变运算对象的值。按它们呈此刻变量之前和之后两种不合气象,其浸染有微妙的不合。
前缀++
前缀++的一般形式是
++变量
例如,若X是整型或某种指针类型的变量,则++X使变量X的质ё僮裒大1个单元,并以X的新值作为表达式“++X”的运算结不美不美观。如以下语句执行前,变量X的值为1,语句
j= ++ x;
使变量X的值酿成3,变量j的值也为3。这里所说的一个“单元”是指:如不美不美观X是整型的,则++x就是通俗的诠释:“x的值比原质ё僮裒加1";x是指针,它指向数组的某个元素,则++x使它指向数组的后一个元素。
后缀++
后缀++的一般形式是
变量++
表达式“变量++”运算结不美不美观是该变量的原本值,在确定了表达式结不美不美观之后,用与前缀++不异的编制增大该变量的值1个单元。
前缀++和后缀++都能使变量的质ё僮裒加1个单元,可是它们所代表的表达式的值却不不异,前者是变量增添后的值,后者是变量还未增添的原先值。例如i,j为整型变量,且i的值为4,以下分袂用①和②表记的代码将使j获得不合的值:
①j=++i ;
②j= i++
都使变量i的值变为5,但①使j的值为5;②使j的值为4。
前缀--
前缀-- 的一般形式是
--变量
前缀--使变量的情削减(或猬缩猬缩后退)l个单元,并以变量的新值为表达式“--变量”的运算结不美不美观。
后缀--
后缀-- 的一般形式是
变量--
后缀-- 浸染于变量时,以该变量的值作为表达式“变量--”的运算结不美不美观,即先取其值为结不美不美观,然后用与前缀--不异的编制削减该变量1个单元。
后缀-- 与前缀-- 的区别近似于后缀++与前缀++的区别。近似前面的例子,依旧假定i的值为4,两代码
③j= --i
④j=i--
都使变量i的值变为3,但③使j的值为3;④使j的值为4。
使用++和--运算符时,其运算对象仅合用于变量,不能是常量等数据值表达式。如 4++或(i+j)++都是不正当的。
++和--是带有副浸染的运算符。建议读者不要在一个表达式中对统一变量多次使用这样的运算符,可能会发生意想不到的结不美不美观。如i的值为4,对表达式
(i++)+(i++)
可能认为它的值为 9(+5)。然而在 TURBO C和MS C系统中,它的值为8。而表达式
(++i)+(++i)
的值为12。这是因为这些系统在措置 i++时,先使用 i的原值计较整个表达式,然后再让i持续两次自增;措置++i时,在计较表达式值之前,先对 i执行两次自增,然后才计较表达式。放前一个表达式的值为8,后一个表达式的值为12。
因+与++(-与--近似)是两个不合运算符,对于近似表达式i+++j会有不合的理解:(i++)+ j或i+(++j)。 C编译的措置编制是自左至右让尽可能多的字符组成一个正当的句法单元(如标识符、数字、运算符等)。是以,i+++j被诠释成(i++)+j,而不是i+(++j)。
增1(++)和减1(--)运算符的连络标的目的是自右至左的。