算術運算符
Turbo C的算術運算符如下:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
操作符 作用
────────────────────────────
+ 加, 一目取正
- 減, 一目取負
* 乘
/ 除
% 取模
-- 減1
++ 加1
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
一、一目和二目操作
一目操作是指對一個操作數進行操作。例如: -a是對a進行一目負操作。
二目操作(或多目操作)是指兩個操作數(或多個操作數)進行操作。
在Turbo C中加、減、乘、除、取模的運算與其它高級語言相同。需要注意
的是除法和取模運算。
例如:
15/2 是15除以2商的整數部分7
15%2 是15除以2的余數部分1
對於取模運算符"%", 不能用於浮點數。
另外, 由於Turbo C中字符型數會自動地轉換成整型數, 因此字符型數也可
以參加二目運算。
例如:
main()
{
char m, n; /*定義字符型變量*/
m='c'; /*給m賦小寫字母'c'*/
n=m+'A'-'a'; /*將c中的小寫字母變成大寫字母'B'後賦給n*/
...
}
上例中m='c'即m=98, 由於字母A和a的ASCII碼值分別為65和97。這樣可以將
小寫字母變成大寫字母, 反之, 如果要將大寫字母變成小寫字母, 則用c+ 'a'
-'A'進行計算。
二、增量運算
在Turbo C中有兩個很有用的運算符, 在其它高級語言中通常沒有。這兩個
運算符就是增1和減1運算符"++"和"--", 運算符"++"是操作數加1, 而"--" 則是
操作數減1。
例如:
x=x+1 可寫成x++, 或++x
x=x-1 可寫成x--, 或--x
x++(x--)與++x(--x)在上例中沒有什麼區別, 但x=m++和x=++m卻有很大差別。
x=m++ 表示將m的值賦給x後, m加1。
x=++m 表示m先加1後, 再將新值賦給x。
三、賦值語句中的數據類型轉換
類型轉換是指不同類型的變量混用時的類型改變。
在賦值語句中, 類型轉換規則是:
等號右邊的值轉換為等號左邊變量所屬的類型。
例如:
main()
{
int i, j; /*定義整型變量*/
float f, g=2.58; /*定義浮點型變量*/
f=i*j; /*i與j的乘積是整型數, 被轉換成為浮點數賦給f*/
i=g; /*g中的浮點型數轉換成為整型數賦給i*/
...
}
由於Turbo C按上述數據類型轉換規則, 因此在作除法運算時應特別注意。
例如:
main()
{
float f;
int i=15;
f=i/2;
}
上面程序經運行後, f=7並不等於准確值7.5。正確的程序應該是:
main()
{
float f;
int i=15;
f=i/2.0;
}
也可直接將i定義為浮點數。
5.2 關系運算符和邏輯運算符
一、邏輯運算符
邏輯運算符是指用形式邏輯原則來建立數值間關系的符號。
Turbo C的邏輯運算符如下:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
操作符 作用
─────────────────────────────
&& 邏輯與
|| 邏輯或
! 邏輯非
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
二、關系運算符
關系運算符是比較兩個操作數大小的符號。
Turbo C的關系運算符如下:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
操作符 作用
─────────────────────────────
> 大於
>= 大於等於
< 小於
<= 小於等於
== 等於
!= 不等於
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
關系運算符和邏輯運算符的關鍵是真(true)和假(false)的概念。Turbo C中
true可以是不為0的任何值, 而false則為0。 使用關系運算符和邏輯運算符表達
式時, 若表達式為真(即true)則返回1, 否則, 表達式為假(即false), 則返回0。
例如:
100>99 返回1
10>(2+10) 返回0
!1&&0 返加0
對上例中表達式!1&&0, 先求!1和先求1&&0將會等於出不同的結果, 那麼何
者優先呢? 這在Turbo C中是有規定的。 有關運算符的優先級本節後面將會講到。
5.3 按位運算符
Turbo C和其它高級語言不同的是它完全支持按位運算符。這與匯編語言的
位操作有些相似。
Turbo C中按位運算符有:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
操作符 作用
────────────────────────────
& 位邏輯與
| 位邏輯或
^ 位邏輯異或
- 位邏輯反
>> 右移
<< 左移
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
按位運算是對字節或字中的實際位進行檢測、設置或移位, 它只適用於字符
型和整數型變量以及它們的變體, 對其它數據類型不適用。
關系運算和邏輯運算表達式的結果只能是1或0。 而按位運算的結果可以取0
或1以外的值。
要注意區別按位運算符和邏輯運算符的不同, 例如, 若x=7, 則x&&8 的值為
真(兩個非零值相與仍為非零), 而x&8的值為0。
移位運算符">>"和"<<"是指將變量中的每一位向右或向左移動, 其通常形式
為:
右移: 變量名>>移位的位數
左移: 變量名<<移位的位數
經過移位後, 一端的位被"擠掉", 而另一端空出的位以0 填補, 所以,
Turbo C中的移位不是循環移動的。
5.4 Turbo C的特殊運算符
一、"?"運算符
"?"運算符是一個三目運算符, 其一般形式是:
<表達式1>?<表達式2>:<表達式3>;
"?"運算符的含義是: 先求表達式1的值, 如果為真, 則求表達式2 的值並把
它作為整個表達式的值; 如果表達式1 的值為假, 則求表達式3 的值並把它作為
整個表達式的值。
例如:
main()
{
int x, y;
x=50;
y=x>70?100:0;
}
本例中, y將被賦值0。如果x=80, y將被賦值100。
因此, "?"運算符可以代替某些if-then-else形式的語句。
二、"&"和"*"運算符
"&"運算符是一個返回操作數地址的單目操作符。
"*"運算符是對"&"運算符的一個補充, 它返回位於這個地址內的變量值, 也
是單目操作符。
例如:
main()
{
int i, j, *m;
i=10;
m=&i; /*將變量i的地址賦給m*/
j=*m; /*地址m所指的單元的值賦給j*/
}
上面程序運行後, i=10, m為其對應的內存地址, j的值也為10。
三、","運算符
","運算符用於將多個表達式串在一起, ","運算符的左邊總不返回, 右邊表
達式的值才是整個表達式的值。
例如:
main()
{
int x, y;
x=50;
y=(x=x-5, x/5);
}
上面程序執行後y值為9, 因為x的初始值為50, 減5後變為45, 45除5為9賦給
y。
四、sizeof運算符
sizeof運算符是一個單目運算符, 它返回變量或類型的字節長度。
例如:
sizeof(double) 為8
sizeof(int) 為2
也可以求已定義的變量, 例如:
float f;
int i;
i=sizeof(f);
則i的值將為4。
五、聯合操作
Turbo C中有一特殊的簡寫方式, 它用來簡化一種賦值語句, 適用於所有的
雙目運算符。其一般形式為:
<變量>=<變量><操作數><表達式>
相當於
<變量><操作數>=<表達式>
例如:
a=a+b 可寫成 a+=b
a=a&b 可寫成 a&=b
a=a/(b-c) 可寫成 a/=b-c
5.5 Turbo C運算符的優先級
Turbo C規定了運算符的優先次序即優先級。 當一個表達式中有多個運算符
參加運算時, 將按下表所規定的優先級進行運算。表中優先級從上往下逐漸降低,
同一行優先級相同。
例如:
表達式 10>4&&!(100<99)||3<=5 的值為1
表達式 10>4&&!(100<99)&&3<=5 的值為0
Turbo C運算符的優先次序
━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━
表達式 ┃優先級
────────────────────────────╂────
()(小括號) [](數組下標) .(結構成員) ->(指針型結構成員) ┃ 最高
────────────────────────────┃ ↑
!(邏輯非) .(位取反) -(負號) ++(加1) --(減1) &(變量地址) ┃ │
────────────────────────────┃ │
*(指針所指內容) type(函數說明) sizeof(長度計算) ┃ │
────────────────────────────┃ │
*(乘) /(除) %(取模) ┃ │
────────────────────────────┃ │
+(加) -(減) ┃ │
────────────────────────────┃ │
<<(位左移) >>(位右移) ┃ │
────────────────────────────┃ │
<(小於) <=(小於等於) >(大於) >=(大於等於) ┃ │
────────────────────────────┃ │
==(等於) !=(不等於) ┃ │
────────────────────────────┃ │
&(位與) ┃ │
────────────────────────────┃ │
^(位異或) ┃ │
────────────────────────────┃ │
|(位或) ┃ │
────────────────────────────┃ │
&&(邏輯與) ┃ │
────────────────────────────┃ │
||(邏輯或) ┃ │
────────────────────────────┃ │
?:(?表達式) ┃ │
────────────────────────────┃ │
= += -=(聯合操作) ┃ │
────────────────────────────┃ │
,(逗號運算符) ┃ 最低