购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2-8 C语言的特殊表达式

除了上述的基本表达式之外,C语言还提供了许多其他高级语言所没有的表达式,也因为C语言有这些表达式,从而使C语言更具有弹性,但也造成初学者的困扰。

2-8-1 递增和递减表达式

C语言提供了两个一般高级语言所没有的表达式:一个是递增,它的表示方式为“++”;另一个递减,它的表示方式为“- -”。

“++”会主动将某个操作数加1。

“- -”会主动将某个操作数减1。

实例1: 有一C语言指令如下:

i++;

假设执行指令前i=2,则执行指令后i=3。

实例2: 有一C语言指令如下:

i--;

假设执行指令前i=2,则执行指令后i=1。

++和- -还有一个很特殊的地方,就是它们既可放在操作数之后,例如i++,这种方式,我们称后置(postfix)运算,如上述两个例子所示。也可以将它们放在操作数之前,例如++i,这种运算方式,我们称前置(prefix)运算。

实例3: 有一C语言指令如下:

++i;

假设执行指令前i=2,则执行指令后i=3。

实例4: 有一C语言指令如下:

--i;

假设执行指令前i=2,则执行指令后i=1。

从上述实例来看,好像前置运算和后置运算并没有太大的差别,其实不然,它们之间仍然是有差别的。

所谓的前置运算,是指在使用这个操作数之前先进行加一或减一的动作。至于后置运算,则是指在使用这个操作数之后才进行加一或减一的动作。实例5:有一C语言指令如下:

s=++i+3;

假设执行指令前s=3,i=5,则执行指令时,计算机会先做i加1,所以i变为6,然后再进行运算,所以s的值是9。

实例6: 有一C语言指令如下:

s=3+i++ ;

假设执行指令前s=3,i=5,则执行指令时,计算机会先执行3+i,所以s的值是8,然后i本身再加1,所以i的值是6。

程序实例 ch2_13.c:前置运算与后置运算的应用。

2-8-2 设定的特殊表达式

假设有一运算指令如下:

i=i+1;

在C语言中有一表达式,可将它改写成:

i+= 1;

由于这种表达式,对2-5节中所述的所有基本算术运算都有效,所以可将上述表达式写成如下表达式:

e1 op= e2;

其中,e1表示操作数,e2也是操作数,而op则是指2-5节中所述的运算符。上式的意义就相当于:

e1=(e1) op (e2);

注意,e2表达式的括号不可遗漏。下面是这种表达式符号的使用。

实例1: 有一C语言指令如下:

a *= c;

假设执行指令前a=3,c=2,则执行指令后c=2,a=6。

使用这种运算时,有一点必须注意,假设有一指令如下:

a+= c*d;

则C在编译时会将上述表达式当作下列指令,然后执行。

a=a+(c*d);

实例2: 有一C语言指令如下:

a *=c+d;

假设执行前,a=3,c=2,d=4,由于上述表达式相当于a=a*(c+d),其中c+d等于6,3*6=18,所以最后可得a=18。

程序实例 ch2_14.c:特殊表达式的应用。

也可将上述特殊表达式应用在位运算指令,未来章节会做完整说明。 0QB55fqh9AgoFN+8i3Aza51j7ERgIwVdd7kaL+IJ2KaZWwFlyJPHaOoDZd43/DDH

点击中间区域
呼出菜单
上一章
目录
下一章
×