計算機概論:C/C++程式設計

 

 

2章、C++程式基本元素

 

 


授課教師:陳慶瀚

WWW : http://www.miat.ee.isu.edu.tw/cpp

E-mail : pierre@isu.edu.tw   

 

 

2.7 遞增(++)和遞減(--)運算子

在高階語言中,遞增(++)和遞減(--)運算子是C/C++語言所獨有的一組運算子,它提供一種精簡和高效率的方式來執行加1或減1的運算。其用法如下:

lvalue++;

這裡lvalue是一個記憶區塊,譬如說一個變數的記憶位置。要把一個值指定給一個記憶體,可以使用Assignment運算子=,如

  x = 10;

是把10存入變數x所指的記憶體中。如果我們寫

x = x+1;

意味著把1x所指的記憶體內容相加,其結果再指定給x所指的記憶體。在CPU內,這個動作可能要花2個時脈的執行時間,但如果我們使用遞增(++)運算子,上式改成

  x++;

執行的結果完全一樣,但只要一個時脈的執行時間,效率就增加了。

遞減運算子--的概念與遞增運算子++相同,只是執行的是減一的功能,因此

x=x-1;

x--;

功能是結果相同,但是後者的效率大於前者。

不管是遞減運算子--或遞增運算子++,它們都有前置(prefix)和後置(postfix)兩種模式如下:

   ++lvalue;  //前置模式

   lvalue++;  //後置模式

使用前置模式,lvalue會立刻被加1,然後才被使用;如果使用後置模式,lvalue會被使用後,然後才加1。下列範例程式展示這兩種模式的差異性。

/*----------------------------------------------------*/

//                  範例程式2-7

//                 遞增運算子的兩種使用模式

//                  陳慶瀚,2001

/*----------------------------------------------------*/

void main()

{

int x,y;

x = 5; 

/*--------- 使用遞增運算子的後置模式------------*/

y = x++;  // x 值首先被指定給y, 然後x才加1

            // x 值為 6 y 5

cout<<"x = "<<x<<", y = "<<y<<endl;

/*--------- 使用遞增運算子的前置模式------------*/

x = 5; 

    y = ++x;  // x 值首先被加1, 然後x值才指定給y 

// x 值為 6 y 6 

cout<<"x = "<<x<<", y = "<<y<<endl;

}

 


 

課堂練習:

使用遞增運算子:請判斷此一程式輸出

#include <iostream.h> 

void main() 

{ 

int x = 10; 

int y; 

cout << " x值為 " << x++ << '.' << endl; 

cout << " x值為  " << ++x << '.' << endl; 

y = x++; 

cout << " x值為  " << x << '.' << endl; 

cout << " y值為  " << y << '.' << endl; 

x = y--; 

cout << " x值為  " << x << '.' << endl; 

cout << " y值為  " << y << '.' << endl; 

  }  

 

計算機概論:C/C++程式設計

義守大學電機系 陳慶瀚

2001.10.02