如果需要pdf文檔,請(qǐng)私信我,我發(fā)給你,這本書(shū)今天讀完了,說(shuō)一下感受,如果只是入門(mén)的話,讀完感受并不強(qiáng)烈,如果在工作了一段時(shí)間后,就會(huì)發(fā)現(xiàn)書(shū)中的錯(cuò)誤確實(shí)是新手容易犯而且一些之前不理解的地方確實(shí)有了更新的認(rèn)識(shí),值得一讀。
因?yàn)榫幾g環(huán)境的不同,可移植性就成了一個(gè)重要話題,本節(jié)討論幾個(gè)最常見(jiàn)的錯(cuò)誤來(lái)源。
1、 應(yīng)對(duì)C語(yǔ)言標(biāo)準(zhǔn)變更新標(biāo)準(zhǔn)無(wú)法在舊編譯器中使用,為了增強(qiáng)可移植性,我們最好的做法在舊的環(huán)境和新的環(huán)境收益中做好選擇。
2、 標(biāo)識(shí)符名稱(chēng)的限制不要用大寫(xiě)的函數(shù)名稱(chēng)與庫(kù)函數(shù)同名,例如malloc和Malloc,假如你自己寫(xiě)的是Malloc,但是編譯器如果不區(qū)分外部名稱(chēng)大小寫(xiě),這里就會(huì)出錯(cuò),要避免這種情況。
3、 整數(shù)的大小非正式情況下short 與 int 是16位 long 是32位,這與機(jī)器的字符長(zhǎng)度有關(guān)。
可移植性最好的辦法就是聲明該變量為long型,但在這種情況下我們?nèi)ザx一個(gè)新的類(lèi)型更加清晰:例如
typedef long tenmil;
4、 字符是有符號(hào)還是無(wú)符號(hào)整數(shù)將char型轉(zhuǎn)換為int型需要做出選擇;如果要轉(zhuǎn)換為有符號(hào)數(shù),那么編譯器將char類(lèi)型擴(kuò)展為int 型時(shí)需要復(fù)制符號(hào)位,如果是轉(zhuǎn)換為無(wú)符號(hào)數(shù),那么編譯器只需要在多余的位上直接填充0即可。如果最高位是1,那么將這數(shù)定義成為無(wú)符號(hào)字符
,無(wú)論什么編譯器,在該字符轉(zhuǎn)換為整型時(shí)都只需在多余的位填充0即可。
一個(gè)常見(jiàn)錯(cuò)誤:如果c是一個(gè)字符變量,使用(unsigned)c 強(qiáng)制類(lèi)型轉(zhuǎn)換成無(wú)符號(hào)整型,這里會(huì)出現(xiàn)錯(cuò)誤。因?yàn)檗D(zhuǎn)換為無(wú)符號(hào)時(shí),會(huì)先轉(zhuǎn)換為int型,這里會(huì)得到非預(yù)期的結(jié)果。
正確的方法是(unsigned char)c;
在向右移位時(shí),空出的位是由0填充還是由符號(hào)位的副本填充?
如果將操作的變量聲明為無(wú)符號(hào)類(lèi)型,那么空出的位是由0填充,如果是有符號(hào)位,那么二者都可以。
移位計(jì)數(shù)(即移位操作的位數(shù))允許的取值范圍是什么?
如果被移位的對(duì)象是n位,那么移位計(jì)數(shù)應(yīng)該大于0且小于n,為什么要加這個(gè)限制,因?yàn)榧由线@個(gè)限制后,我們就能夠在硬件上高效地實(shí)現(xiàn)移位運(yùn)算。
null指針并不指向任何對(duì)象,除非是用于賦值或比較運(yùn)算,出于其他任何目的使用null指針都是非法的。
7、 除法運(yùn)算時(shí)發(fā)生的截?cái)?p>q=a/b與機(jī)器的整數(shù)長(zhǎng)度有關(guān),如果是32位,那么大為2的31次方-1。
RAND_MAX為隨機(jī)數(shù)的大取值。
使用宏定義
#define _toupper? (?+’A’-’a’)
#define _tolower? (?+’a’-’A’)
malloc:申請(qǐng)分配一塊新內(nèi)存
realloc:指向已分配的內(nèi)存,重新定義大小,可能涉及到內(nèi)存的拷貝
free :釋放內(nèi)存
在代碼編寫(xiě)中,如何減少程序錯(cuò)誤,以下是一些通用的建議:
1、通用建議1、不要說(shuō)服自己相信錯(cuò)誤
2、直接了當(dāng)?shù)乇砻饕鈭D
3、考察最簡(jiǎn)單的特例
4、使用不對(duì)稱(chēng)邊界
5、注意潛伏在暗處的bug
6、防御性編程:能想到可能發(fā)生的錯(cuò)誤就一定會(huì)發(fā)生,所以應(yīng)做出規(guī)避
C陷阱與缺陷(讀書(shū)筆記一)
C陷阱與缺陷(讀書(shū)筆記二)
C陷阱與缺陷(讀書(shū)筆記三)
C陷阱與缺陷(讀書(shū)筆記總)
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
網(wǎng)站名稱(chēng):C語(yǔ)言進(jìn)階:C陷阱與缺陷(讀書(shū)筆記四)-創(chuàng)新互聯(lián)
瀏覽路徑:http://www.rwnh.cn/article0/cojioo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊(cè)、定制開(kāi)發(fā)、網(wǎng)站建設(shè)、用戶(hù)體驗(yàn)、企業(yè)建站、網(wǎng)站收錄
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容