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

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

表達式和基本語句與位運算

2019-11-10 23:49:49
字體:
來源:轉載
供稿:網友


表達式和基本語句

 

①if語句 (分支:單分支、雙分支、多分支)

if 語句是C 語言中最簡單、最常用的語句,然而很多程序員用隱含錯誤的方式寫if語句;

布爾變量與零值比較、整型變量與零值比較、浮點變量與零值比較、指針變量與零值比較

 

②while,for語句

C++/C 循環語句中,for 語句使用頻率最高,while語句其次,do語句很少用。

在多重循環中,如果有可能,應當將最長的循環放在最內層,最短的循環放在最外層,以減少CPU跨切循環層的次數;

如果循環體內存在邏輯判斷,并且循環次數很大,宜將邏輯判斷移到循環體的外面;

 

③switch開關語句

switch語句可以產生具有多個分支的控制流程。

   它的格式是:

      switch(控制表達式)

     {

         case常量表達式:語句列表

         case常量表達式:語句列表

          ...

        default:語句列表

     }

每個case語句的結尾不要忘了加break,否則將導致多個分支重疊(除非有意使多個分支重疊);

不要忘記最后那個default分支。即使程序真的不需要default處理,也應該保留語句 default : break;這樣做并非多此一舉,而是為了防止別人誤以為你忘了default處理。

 

④goto語句(流程轉向)

由于goto語句可以靈活跳轉,如果不加限制,它的確會破壞結構化設計風格。其次,goto語句經常帶來錯誤或隱患。它可能跳過了某些對象的構造、變量的初始化、重要的計算等語句.

 

 

位運算及其運算符

①按位與──& (1)格式:x&y (2)規則:對應位均為1時才為1

 (3)主要用途:取(或保留)1個數的某(些)位,其余各位置0。

②按位或──|   (1)格式:x|y   (2)規則:對應位均為0時才為0,否則為1

   (3)主要用途:將1個數的某(些)位置1,其余各位不變。

 

③按位異或──^

(1)格式:x^y

(2)規則:對應位相同時為0,不同時為1:3^9=10。

(3)主要用途:使1個數的某(些)位翻轉(即原來為1的位變為0,為0的變為1),其余各位不變。

 

④按位取反──~

(1)格式:~x

(2)規則:各位翻轉,即原來為1的位變成0,原來為0的位變成1:在IBM-PC機中,~0=0xffff,~9=0xfff6。

(3)主要用途:間接地構造一個數,以增強程序的可移植性。

 

⑤按位左移──<<

(1)格式:x<<位數

(2)規則:使操作數的各位左移,低位補0,高位溢出:5<<2=20。

 

⑥按位右移──>>

(1)格式:x>>位數

(2)規則:使操作數的各位右移,移出的低位舍棄;高位:

1)對無符號數和有符號中的正數,補0;

2)有符號數中的負數,取決于所使用的系統:補0的稱為“邏輯右移”,補1的稱為“算術右移”。例如,20 >> 2=5。

說明:

(1)x、y和“位數”等操作數,都只能是整型或字符型數據。除按位取反為單目運算符外,其余均為雙目運算符。

(2)參與運算時,操作數x和y,都必須首先轉換成二進制形式,然后再執行相應的按位運算。

(3)實現&、|、^運算主要用途的方法

   1)構造1個整數:該數在要取(或保留)的位、或要置1的位、或要翻轉的位上為1,其余均為0。

   2)進行按位與、或按位或、或按位異或操作。

(4)實現按位取反主要用途的方法

   1)求~0,間接地構造一個全1的數;

   2)按需要進行左移或右移操作,構造出所需要的數。

 

復合賦值運算符

除按位取反運算外,其余5個位運算符均可與賦值運算符一起,構成復合賦值運算符:&=、|+、^=、<<=、>>=

 

不同長度數據間的位運算──低字節對齊,短數的高字節按最高位補位:

(1)對無符號數和有符號中的正數,補0;

(2)有符號數中的負數,補1。

 

位段的概念與定義    所謂位段類型,是一種特殊的結構類型,其所有成員均以二進制位為單位定義長度,并稱成員為位段。

 

說明

(1)因為位段類型是一種結構類型,所以位段類型和位段變量的定義,以及對位段(即位段類型中的成員)的引用,均與結構類型和結構變量一樣。

(2)對位段賦值時,要注意取置范圍。一般地說,長度為n的位段,其取值范圍是:0~(2n-1)。

(3)使用長度為0的無名位段,可使其后續位段從下1個字節開始存儲。

 

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 如东县| 马关县| 南阳市| 大姚县| 开原市| 密山市| 莱阳市| 阜城县| 舞阳县| 富民县| 墨竹工卡县| 辽阳县| 香格里拉县| 平湖市| 正镶白旗| 平顶山市| 宿州市| 中卫市| 朝阳区| 和硕县| 明水县| 疏勒县| 木里| 中牟县| 文昌市| 南宫市| 进贤县| 开原市| 独山县| 栖霞市| 台南县| 富顺县| 德保县| 廊坊市| 洛川县| 灵丘县| 拜泉县| 象山县| 昭平县| 常熟市| 揭阳市|