内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

C語(yǔ)言進(jìn)階:C陷阱與缺陷(讀書(shū)筆記四)-創(chuàng)新互聯(lián)

如果需要pdf文檔,請(qǐng)私信我,我發(fā)給你,這本書(shū)今天讀完了,說(shuō)一下感受,如果只是入門(mén)的話,讀完感受并不強(qiáng)烈,如果在工作了一段時(shí)間后,就會(huì)發(fā)現(xiàn)書(shū)中的錯(cuò)誤確實(shí)是新手容易犯而且一些之前不理解的地方確實(shí)有了更新的認(rèn)識(shí),值得一讀。

為克山等地區(qū)用戶(hù)提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及克山網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、克山網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專(zhuān)業(yè)、用心的態(tài)度為用戶(hù)提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶(hù)的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!C語(yǔ)言進(jìn)階
  • 七、 可移植性缺陷
    • 1、 應(yīng)對(duì)C語(yǔ)言標(biāo)準(zhǔn)變更
    • 2、 標(biāo)識(shí)符名稱(chēng)的限制
    • 3、 整數(shù)的大小
    • 4、 字符是有符號(hào)還是無(wú)符號(hào)整數(shù)
    • 5、 移位運(yùn)算符
    • 6、 內(nèi)存位置為0
    • 7、 除法運(yùn)算時(shí)發(fā)生的截?cái)?/li>
    • 8、 隨機(jī)數(shù)的大小
    • 9、 大小寫(xiě)轉(zhuǎn)換
    • 10、 首先釋放、然后重新分配
  • 八、 建議
    • 1、通用建議

七、 可移植性缺陷

因?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;

5、 移位運(yùn)算符

在向右移位時(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)算。

6、 內(nèi)存位置為0

null指針并不指向任何對(duì)象,除非是用于賦值或比較運(yùn)算,出于其他任何目的使用null指針都是非法的。

7、 除法運(yùn)算時(shí)發(fā)生的截?cái)?p>q=a/b
r=a%b
性質(zhì)1:q*b+r==a;性質(zhì)2:如果改變a的正負(fù)號(hào),我們希望只改變q的符號(hào),但不改變q的絕對(duì)值;性質(zhì)3:當(dāng)b>0時(shí),我們希望r>=0且r這三條性質(zhì)不可能同時(shí)在計(jì)算機(jī)中成立,所以在實(shí)現(xiàn)整數(shù)除法截?cái)噙\(yùn)算時(shí),會(huì)放棄三條原則中的至少一條,一般是第三條。
最好是避免a為負(fù)數(shù)這樣的情況,并且聲明a為無(wú)符號(hào)數(shù)

8、 隨機(jī)數(shù)的大小

與機(jī)器的整數(shù)長(zhǎng)度有關(guān),如果是32位,那么大為2的31次方-1。
RAND_MAX為隨機(jī)數(shù)的大取值。

9、 大小寫(xiě)轉(zhuǎn)換

使用宏定義
#define _toupper? (?+’A’-’a’)
#define _tolower? (?+’a’-’A’)

10、 首先釋放、然后重新分配

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)

成都網(wǎng)站建設(shè)公司
崇义县| 宣恩县| 乐亭县| 荣成市| 武夷山市| 无锡市| 博湖县| 庆元县| 牡丹江市| 旌德县| 含山县| 甘谷县| 开阳县| 富宁县| 富川| 六安市| 伊金霍洛旗| 浦北县| 桑日县| 商都县| 叙永县| 汉川市| 泸州市| 大渡口区| 长春市| 湘阴县| 永定县| 平利县| 瑞丽市| 偏关县| 嘉黎县| 惠水县| 绥化市| 洪湖市| 故城县| 淮北市| 铁岭县| 洛浦县| 连江县| 栾城县| 抚顺县|