成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

C經(jīng)典書籍筆記——C陷阱與缺陷③(語(yǔ)意陷阱)

atinosun / 2147人閱讀

摘要:兩個(gè)指針?biāo)赶蛭恢孟嗤?,?shí)際為同一個(gè)指針。四求值順序總結(jié)語(yǔ)言中只有四個(gè)運(yùn)算符,明確規(guī)定了求值順序和先對(duì)左邊求值,只在需要時(shí)對(duì)右邊求值如此避免除錯(cuò)誤。在結(jié)果為真是返回,結(jié)果為假是返回。原因一只要的值都限制在和的結(jié)果始終相同。

目錄

一、前言

二、字符指針

三、邊界計(jì)算與不對(duì)稱邊界

1.經(jīng)典錯(cuò)誤①

2.經(jīng)典錯(cuò)誤②

3.總結(jié)

四、求值順序

五、運(yùn)算符&& ||和!


一、前言


二、字符指針

結(jié)論一:復(fù)制指針并不會(huì)復(fù)制指針?biāo)赶虻膬?nèi)容。兩個(gè)指針?biāo)赶蛭恢孟嗤瑢?shí)際為同一個(gè)指針。

結(jié)論而:開辟兩個(gè)數(shù)組,即使兩個(gè)數(shù)組內(nèi)容相同,地址也絕不相同。


三、邊界計(jì)算與不對(duì)稱邊界

1.經(jīng)典錯(cuò)誤①

int main(){	int i = 0; int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };	for (i = 0; i < 13; i++)	{		arr[i] = 0;		printf("haha");	}	return 0;}

計(jì)算的結(jié)果是程序陷入死循環(huán)

分析:1.棧區(qū)默認(rèn)先使用高地址,再使用低地址? 2.數(shù)組內(nèi)元素隨下標(biāo)增長(zhǎng),地址由低到高變化

?調(diào)試后即可發(fā)現(xiàn),i與arr[9]的地址相差3字節(jié),所以i即為實(shí)際不存在的arr[12].

[補(bǔ)充知識(shí):ANSI c標(biāo)準(zhǔn)允許這種用法——數(shù)組中溢界元素的地址位于數(shù)組所占內(nèi)存之后,這個(gè)地址可以進(jìn)行賦值比較,但是不能解引用(若是數(shù)組之前存在溢界則語(yǔ)法不允許)]

2.經(jīng)典錯(cuò)誤②

十米長(zhǎng)的圍欄每一米就需要一根欄桿支撐,則共需要幾根欄桿?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?11

3、總結(jié)

欄桿問題你若不假思索可能會(huì)回答為10。欄桿問題的根源正是加減一帶來的困惑

對(duì)此我們堅(jiān)持以下原則

原則一:考慮最簡(jiǎn)單的特例(如考慮20到10間有幾個(gè)數(shù),20-10還要+1嗎。不妨考慮10到10有幾個(gè)數(shù))

原則二:仔細(xì)計(jì)算邊界

而在實(shí)際編程中,一個(gè)編程技巧則可以"一言以蔽之",即不對(duì)稱邊界。

x>=0 && x<16? 要優(yōu)于 x>=0 && x<=15

不對(duì)稱邊界上界-下界就是之間所包含的數(shù)。


四、求值順序

總結(jié):c語(yǔ)言中只有四個(gè)運(yùn)算符(&& ;|| ;?: ;,)明確規(guī)定了求值順序

&&和||先對(duì)左邊求值,只在需要時(shí)對(duì)右邊求值:

if(y!=0 && x/y>a)

如此避免除0錯(cuò)誤。

特別注意,賦值操作符不保證任何求值順序,即使考慮了優(yōu)先級(jí)和結(jié)合性,也會(huì)有意想不到的錯(cuò)誤

int i=0;while(i

對(duì)于以上的代碼,就不能確定y是否在i自增之前求值。

問題代碼1:c+--c(我們可以根據(jù)"大嘴法"判斷為c+(--c)),但c自增的先后不得而知)

問題代碼2:int a=(++i)+(++i)+(++i)? (同理)

問題代碼3:answer=func()-func()*func()? ? (我們不知道哪個(gè)func被先調(diào)用)


五、運(yùn)算符&& ||和!

這三種運(yùn)算符返回值都為0或1。在結(jié)果為真是返回1,結(jié)果為假是返回0。

考慮一下代碼,其功能是查詢表中一個(gè)特定元素

int i = 0;while (i < tabsize && tab[i] != x){	i++;}

現(xiàn)分析將&&替換成&仍然能"正常工作"的原因。

原因一:只要xy的值都限制在0~1,x&&y和x&y的結(jié)果始終相同。

原因二:數(shù)組結(jié)尾之后的下一個(gè)元素,只要不改變他的值而僅僅是讀取,沒有什么大的危害

原因三:不同與&&的求值順序,&要求兩邊都要被求值

如果tabsize大小等于tab中元素的個(gè)數(shù),即使i=tabsize后還會(huì)繼續(xù)查找下去,陷入死循環(huán)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/119671.html

相關(guān)文章

  • 只看不敲,神也學(xué)不好C---------計(jì)算機(jī)經(jīng)典書籍經(jīng)驗(yàn)分享

    摘要:學(xué)單片機(jī)多去官網(wǎng)上查資料,下載手冊(cè),像我入門的單片機(jī)經(jīng)常去官網(wǎng),還有學(xué)的系列板子,公司的官網(wǎng)的官方例程給的很詳細(xì),在英文視角閱讀對(duì)你大有益處。 目錄 1.C語(yǔ)言經(jīng)典 2.單片機(jī)系列 3.Python方面 4.嵌入式LWip協(xié)議 5.Android 6.C++經(jīng)典書籍 7.Linux開發(fā) ...

    FleyX 評(píng)論0 收藏0
  • C陷阱缺陷》第三章

    摘要:而對(duì)于二維數(shù)組,因?yàn)閮?nèi)存連續(xù)性的原因,內(nèi)存并不會(huì)真真的開辟一個(gè)二維空間,而是連續(xù)依次存入二維數(shù)組的每個(gè)數(shù)據(jù)。之所以有二維數(shù)組的說法是為了分析問題方便。二維數(shù)組的實(shí)質(zhì)是一維數(shù)組,只是其元素類型是一維數(shù)組類型。 ...

    tyheist 評(píng)論0 收藏0
  • 【帶你刷系列】?c陷阱缺陷(一)

    內(nèi)容介紹 詞法陷阱介紹1 =不同于==2 & 和 | 不同于 && 和 ||3 詞法分析中的貪心法4 整形常量問題5 字符與字符串問題 詞法陷阱介紹 探討符號(hào)和組成符號(hào)的字符間的關(guān)系,以及有關(guān)符號(hào)含義的一些常見誤解 1 =不同于== =:賦值操作符,將右操作數(shù)的值放到左操作數(shù)的空間里面。 ==:關(guān)系操作符,用來比較左右兩個(gè)數(shù),若相等則為1,若不相等則為0。 當(dāng) == 寫成 = 的后...

    wpw 評(píng)論0 收藏0
  • 軟件測(cè)試剛?cè)胄斜乜矗?測(cè)試基本流程、測(cè)試用例全在這里

    摘要:從業(yè)務(wù)流程上,應(yīng)得到以下信息主流程是什么條件備選流程是什么數(shù)據(jù)流向是什么關(guān)鍵的判斷條件是什么測(cè)試用例設(shè)計(jì)完成以上兩步則可進(jìn)行測(cè)試用例設(shè)計(jì),功能測(cè)試用例,應(yīng)盡量考慮邊界異常性能的情況,以便發(fā)現(xiàn)更多的隱藏問題。 為什么測(cè)試人員要參加需求分析?也就是進(jìn)行測(cè)試需求分析的目的是什么? 第一、把用戶需求...

    Cristalven 評(píng)論0 收藏0
  • 深入理解ES6筆記(十一)代理(Proxy)和反射(Reflection)API(12)

    摘要:是陷阱函數(shù)對(duì)應(yīng)的反射方法,同時(shí)也是操作的默認(rèn)行為。對(duì)象外形指的是對(duì)象已有的屬性與方法的集合,由于該屬性驗(yàn)證只須在讀取屬性時(shí)被觸發(fā),因此只要使用陷阱函數(shù)。無(wú)論該屬性是對(duì)象自身的屬性還是其原型的屬性。 主要知識(shí)點(diǎn):代理和反射的定義、常用的陷阱函數(shù)、可被撤銷的代理、將代理對(duì)象作為原型使用、將代理作為類的原型showImg(https://segmentfault.com/img/bVbfWr...

    explorer_ddf 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<