赋值运算-南老师(转)

赋值运算

差点忘了,我们已经很熟悉的等号:= ,C,C++称为赋值操作。看看例子,是不是很熟悉:

int a = 10;

再如:

int b;

b = a;

或:

int c = 12 * 2;

 

在C++中,可以使用连等操作:

int a ,b;

a = b = 100;

结果是,a和b都为100。

自运算

先来看一个计算机编程中常有的语句例子:

 

int a = 10;

a = a + 1;

 

上面的代码执行后,结果a的值是11。可能不是很理解 a = a + 1;这种运算。

首先可能会认为,a 和 a + 1 怎么会相等呢?这可是个严重错误,要知道,在C,C++里,'=' 就是表示赋值操作,至于表示左右两值“相等” 的另有符号。因此,a = a + 1,所完成的工作就是:先计算出 a + 1的值,然后将该值赋给a。

假设我们的存款原为a,现在存入1元,那么新的存款就等于旧存款加上1元钱,用编程语言表达,就是 a = a +1;

在C,C++中,这样的自加操作可以有另一种表达,并且用这一种表达,计算机的运算速度比较快。

a = a +1;的另一种运算速度较快的表达方法:

a += 1;

+= 被定义为一种新的操作符(因此+和=要连着,中间不能有空格)。它实现的操作就是将其左边的量在自身的基础上加上右边表达式的值。比如:,假设a原来的值为 10,那么:

a += 2;

执行这一句后,a的值为12,即 a = 10 + 2;

 

同样的,减,乘,除,求余都有这种操作符:-= 、 *= 、/= 、%= 等。我们以后学习到的另外一些运算符,也有同样的这种对应运算。举一些例子:

假设在分别进行以下操作之前,a原值都为10。

a -= 2;

执行后,a值为8;(a = 10 - 2)

 

a *= 2;

执行后,a值为20;(a = 10 * 2)

 

a /= 2;

执行后,a值为5;(a = 10 / 2)

 

a %= 2;

执行后,a值为0; (a = 10 % 2)

 

C,C++提供这些操作符,目的仅仅是为了提高相应操作的运算速度。为什么 a += 2;会比 a = a + 2;运算得快呢?从编译的角度上看,是因为前者可以生成更短小的汇编代码。

C,C++提供这些别的语言没有的操作符,可以供我们写出优化的代码。

在某些特殊情况下,优化还可以继续。请看下一小节。

posted @ 2009-07-26 13:16  扬帆远航K  阅读(208)  评论(0编辑  收藏  举报