国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

5.  運算符

2019-11-17 05:09:56
字體:
來源:轉載
供稿:網友

  Turbo C的運算符非常豐富, 主要分為三大類: 算術運算符, 關系運算符與
邏輯運算符, 按位運算符。除此之外, 還有一些用于完成非凡任務的運算符。下
面分別進行介紹。
 
5.1 算術運算符
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(長度計算) ┃ │
────────────────────────────┃ │
*(乘) /(除) %(取模) ┃ │
────────────────────────────┃ │
+(加) -(減) ┃ │
────────────────────────────┃ │
<<(位左移) >>(位右移) ┃ │
────────────────────────────┃ │
<(小于) <=(小于等于) >(大于) >=(大于等于) ┃ │
────────────────────────────┃ │
==(等于) !=(不等于) ┃ │
────────────────────────────┃ │
&(位與) ┃ │
────────────────────────────┃ │
^(位異或) ┃ │
────────────────────────────┃ │
 (位或) ┃ │

────────────────────────────┃ │
&&(邏輯與) ┃ │
────────────────────────────┃ │
  (邏輯或) ┃ │
────────────────────────────┃ │
?:(?表達式) ┃ │
────────────────────────────┃ │
= += -=(聯合操作) ┃ │
────────────────────────────┃ │
,(逗號運算符) ┃ 最低
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 息烽县| 保亭| 霸州市| 双鸭山市| 舞钢市| 岳池县| 肇庆市| 同江市| 封丘县| 滁州市| 大竹县| 华容县| 绥江县| 贡觉县| 灵川县| 浦东新区| 邢台市| 健康| 三台县| 齐齐哈尔市| 临清市| 手机| 吉安县| 澜沧| 梁山县| 湟中县| 明光市| 沙雅县| 徐闻县| 永定县| 宝山区| 车险| 易门县| 宜都市| 涞水县| 秀山| 阿合奇县| 进贤县| 林甸县| 菏泽市| 绥芬河市|