表達式和基本語句
①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個字節開始存儲。
新聞熱點
疑難解答