日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
C語言中的“六大陷阱”,你可能已經(jīng)知道了兩個

前戲

要理解一個C 程序,僅僅理解組成該程序的符號是不夠的,我們還需要理解這些符號是如何組成聲明、表達式、語句和程序的。今天我們就來討論一下不一樣的語法結(jié)構(gòu)。

1. 正確理解函數(shù)聲明

你是否見過這樣的代碼“(*(void(*)())0)();”,你能知道這是上面意思嗎?

看不懂不用擔心,下面我們來分析一下:任何C變量的聲明都由兩部分組成:類型以及一組類似表達式的聲明符(declarator)。聲明符從表面上看魚表發(fā)揮有些類似,對他就只應(yīng)該返回一個聲明給定的結(jié)果。(void (*)()0)是將常數(shù)0 轉(zhuǎn)型為“指向返回值為void 的函數(shù)的指針”類型。而(*(void(*)())0)();就可以看成是一個函數(shù)調(diào)用,末尾的分號使得表達式成為一個語句。當然我們也可以使用typedef來世表達式更加清晰:

 
 
 
 
  1. typedef void (*funcptr)(); 
  2. (*(funcptr)0)(); 

2. 運算符的優(yōu)先級問題

在 C語言中,運算符優(yōu)先級有15個之多,如果不知道運算符的優(yōu)先級我們在處理問題,分析代碼時,就非常被動,那么我們可以對運算符進行簡單的分組,了解各組運算符之間的相對優(yōu)先級,那么記起來就相對簡單了,可以簡單的記做:!> 算術(shù)運算符 > 關(guān)系運算符>&&>|| > 賦值運算符。

3. 語句結(jié)束符的分號問題

C語言以分號“;”,作為語句結(jié)束的標志,那么如果在表達式后多寫了分號,會出現(xiàn)什么結(jié)果呢?這個分號也許會被視作一個不會產(chǎn)生任何實際效果的空語句,或者編譯器會因為這個多余的分號產(chǎn)生一條警告信息,可以根據(jù)警告信息去掉這個分號。但一個例外就是在if 或者while語句之后多寫一個分號,此時原來在if或者while之后的語句即使一條單獨的語句,魚條件判斷沒有了任何關(guān)系。請看一下代碼:

 
 
 
 
  1. If(x > y)return; 
  2. If(x > y);return; 

這兩句完全是不一樣的。

4. Switch 語句問題

C語言中的switch,在case分支后都需要添加一個break;語句,不然會已知順著語句執(zhí)行下去,達不到我們需要的效果。

5. 函數(shù)調(diào)用

與其他程序設(shè)計語言不同,C語言要求:在函數(shù)調(diào)用時及時函數(shù)不帶參數(shù),也應(yīng)該包含參數(shù)列表,因此,如果f 是一個函數(shù),f();一個函數(shù)調(diào)用,而f;卻是一個什么也不做的語句。

6. else 懸掛問題

我們經(jīng)常聽到說else要和if 配對使用,然而在我們寫代碼時,還是會經(jīng)常出錯,例如如下代碼:

這段代碼的本意是分為兩種情況,x 等于0 不等于0,然而上面的代碼表達的意思卻截然不同。即 想不等于0,程序不做處理,x 等于0時,判斷y的值,做出不同的處理。


新聞標題:C語言中的“六大陷阱”,你可能已經(jīng)知道了兩個
分享網(wǎng)址:http://www.5511xx.com/article/coccjog.html