運算符(第三部份)

前頁 目錄 下頁

關係及等值運算符 布爾邏輯運算符 條件運算符

關係及等值運算符 Top

在 C++ 中,「==」及「!=」是等值運算符,而「<」、「 >」、「<=」及「>=」是關係運算符。

C++ 中的運算符 運算 C++ 算式範例 等同的 Pascal 算式
== 相等於 a == b a = b
!= 不相等於 a != b a <> b
< 少於 a < b a < b
> 多於 a > b a > b
<= 少於或相等於 a <= b a <= b
>= 多於或相等於 a >= b a >= b

所有等值及關係運算符均為雙元運算符

留意不要把「==」(相等於符號)和「=」(賦值符號)混淆。


布爾邏輯運算符 Top

(假設以下的 ab 在 C++ 是數值類型,而在 Pascal 是布爾類型。)

C++ 的運算符 運算 C++ 算式範例 等同的 Pascal 算式
&& 邏輯 AND a && b a and b
|| 邏輯 OR a || b a or b
! 邏輯 NOT !a not a

從上表得知,「&&」及「||」是雙元運算符, 而「!」是單元運算符,它的操作是在它的右邊。

下列各表說明了這些運算符的操作方式。

邏輯 AND (&&)

a b a && b
0 0 0
0 非零值 0
非零值 0 0
非零值 非零值 1

邏輯 OR (||)

a b a || b
0 0 0
0 非零值 1
非零值 0 1
非零值 非零值 1

邏輯 NOT (!)

a !a
0 1
非零值 0

C++ 沒有「布爾」這種數據類型。等值及關係數據類型回傳的值是 1(真)及 0(假)。一般來說,任何不是零的值均當作是「真」,而零會被當作是「假」看待。


條件運算符 Top

條件運算符是一個三元運算符(一個可操作於三個操作數)。這算式的形式如下︰
    <算式_1> ? <算式_2> : <算式_3>

<算式_1> 永遠被優先執行。如果它回傳的值不是零(「真」),以上算式回傳 <算式_2> 所回傳的值;否則,該算式回傳的會是 <算式_3>。通常,這種算式可以被當為以下的情形︰

    "If <算式_1> then <算式_2> else <算式_3>."

這個意思是說使用了條件運算符的語句可以被  if-else 控制結構 代替。

看看以下程序作為例子︰

程序九︰使用條件運算符
#include <iostream.h>

main()
{
  int x, y, min;

  cout << "Enter x: ";
  cin >> x;
  cout << "Enter y: ";
  cin >> y;
 
min = (x < y ? x : y);
  cout << x << (
x > y ? " > " : " <= ") << y << endl;
  cout << min << " is the smaller number." << endl;

  return 0;
}
輸出範例一(紅色的文字由使用者輸入)︰
Enter x: 10
Enter y: 5
10 > 5
5 is the smaller number.
輸出範例二(紅色的文字由使用者輸入)︰
Enter x: 4
Enter y: 7
4 <= 7
4 is the smaller number.

min = (x < y ? x : y);
如果 x 少於 y,算式「x < y」就是真的(即其回傳值不是零)以及 min 會被賦予 x 的值。
如果 x 多於或相等於 y,算式「x < y」就是假的(即其回傳值為零),以及 min 會被賦予 y 的值。

x > y ? " > " : " <= "
如果 x 多於 y,算式「x > y」就是真的,上列算式會回傳「 > 」。
如果 x 少於或等於 y,算式「x > y」就是假的,上列算式會回傳「 <= 」。

前頁 目錄 下頁