日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

《编写高质量代码:改善c程序代码的125个建议》——建议19:避免使用嵌套的“?:”...

發布時間:2025/3/20 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《编写高质量代码:改善c程序代码的125个建议》——建议19:避免使用嵌套的“?:”... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本節書摘來自華章計算機《編寫高質量代碼:改善c程序代碼的125個建議》一書中的第3章,建議19,作者:馬 偉 更多章節內容可以訪問云棲社區“華章計算機”公眾號查看。

建議19:避免使用嵌套的“?:”

在C語言中,“?:”運算符是if/else語句的另外一種表示形式,其一般形式如下所示:

Exp1 ? Exp2 : Exp3

其中,Exp1、Exp2 與 Exp3都是表達式。程序首先對Exp1 求值,如果 Exp1 的值為真時,就對Exp2 求值并將其求值結果作為整個問號表達式的值;否則,就對Exp3 求值并將其求值結果作為整個問號表達式的值。
由于問號表達式語法的簡潔性,因此我們經常看到一些程序員在做判斷時只用“?:”,而從不使用if/else語句。如下面的示例代碼所示:

unsigned int f( int x) {return x>=1?1:0; }

很顯然,相對于if/else語句,這樣的代碼看起來更加簡潔明了。但是,如果我們嵌套使用“?:”,那就不一樣了。如下面的示例代碼所示:

unsigned int f(unsigned int x) {return( (x<=1)?(1-x):(x==4)?2:(x+1) ); }

在上面的代碼中,嵌套了兩層“?:”,它實際等效于下面的代碼:

unsigned int f(unsigned int x) {unsigned temp;if(x <= 1){if(x != 0){temp = 0;}else{temp = 1;}}else{if(x == 4) {temp = 2;}else{temp = x + 1;}}return temp; }

從上面的代碼中可以看出,盡管嵌套使用“?:”可以使代碼變得簡潔,但代碼的可讀性卻因此降低了不少。這個時候有的程序員或許會說,嵌套使用“?:”不僅使代碼簡潔,更重要的是它比if/else語句能夠產生更加高效的代碼。但實際情況并非如此,有興趣的讀者不妨試一試下面的代碼,對兩者做個比較。

unsigned int f(unsigned int x) {unsigned temp;if( x <= 1 ){temp = 0; if( x == 0 ){temp = 1;}}else{temp = 2; if( x != 4 ){temp = x + 1;}}return temp ; }

其實,使用“?:”運算符所存在的問題是:由于它很簡單,容易使用,看起來好像是產生高效代碼的理想方法。因此,程序員就不再尋找更好的解決方法了。更糟糕的是,有些程序員會將if/else語句全部轉換為“?:”來獲得所謂的高效解決方案。而實際上“?:”并不比if/else語句好,它們所產生的匯編代碼也基本相同。
因此,為了能夠提高程序的執行效率,我們應該將時間花在尋求可替代的高效算法上,而不是一味地追求以某個稍微不同的方式來實現同一個算法上。例如,我們可以將上面的代碼修改成下面這種更直接的實現方法:

unsigned int f(unsigned int x) {assert( x >= 0 && x <= 4 );if( x == 1 ) {return 0 ;}if( x == 4 ) {return 2 ;}return x + 1 ; }

甚至,我們還可以使用下面的列表方式來實現上面的示例程序,如下面的代碼所示:

unsigned int f(unsigned int x) {assert( x >= 0 && x <= 4 );static const unsigned temp[] ={1,0,3,4,2 };return temp[x] ; }

總結

以上是生活随笔為你收集整理的《编写高质量代码:改善c程序代码的125个建议》——建议19:避免使用嵌套的“?:”...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 爱情岛论坛亚洲品质自拍视频 | 欧美日韩免费做爰视频 | 国语对白少妇spa私密按摩 | jlzzzjlzzz国产免费观看 | 国产一区二区三区久久久 | 日本不卡在线播放 | 无码视频一区二区三区 | 2023毛片| 国产老熟女一区二区三区 | 国产精彩视频在线观看 | 羽月希奶水一区二区三区 | 人人草人人射 | 官场艳妇疯狂性关系 | 欧美怡春院 | 日在线视频 | 男人操女人视频网站 | 欧美两根一起进3p做受视频 | 国产一区视频在线观看免费 | 欧美日本韩国一区二区 | 一区二区在线不卡 | 国产精品资源网 | 国产黄色片免费 | 日本高清不卡视频 | 激情五月在线 | 一区二区三区 日韩 | 国产污视频在线观看 | 国产主播在线看 | 欧美日韩国产电影 | 中文字幕一区二区三区乱码不卡 | 蜜臀aⅴ国产精品久久久国产老师 | 国产午夜三级一区二区三 | 午夜精品久久久久久99热 | 福利在线国产 | a级性生活视频 | 九九热精品视频在线观看 | 久久精品国产亚洲AV无码男同 | 亚洲影视中文字幕 | 超碰公开在线观看 | 中出精品 | 欧美激情999 | 免费精品在线 | av福利网站| 男女午夜激情视频 | av网站在线免费播放 | 国产亚洲精品久久久久久青梅 | 毛片一级片| 国产婷婷色一区二区三区在线 | 亚洲美女视频网 | 中日韩精品视频在线观看 | 天天综合av | 亚洲码欧美码一区二区三区 | 欧美 日韩 中文 | 欧美日韩一区二区不卡 | 操操干干 | 污视频软件在线观看 | 日韩久久网| 成人小视频在线免费观看 | 人人插插 | 国产精品操 | 亚洲第一天堂网 | 国产美女自慰在线观看 | 国产a级精品 | 99热这里只有精 | 人人舔人人爽 | 五月天激情四射 | av在线在线 | 精品无码人妻一区 | 国产一区视频在线免费观看 | 特黄视频 | 久久a久久 | 日本妈妈9 | 亚洲青草视频 | 欧美视频在线一区二区三区 | 国产激情无套内精对白视频 | 国产视频h| 免费看女人裸体 | 久久国产色av | 欧美激情欧美激情在线五月 | 一区二区三区在线免费观看 | 亚洲美女www午夜 | 黑人激情视频 | 女教师高潮黄又色视频 | 亚洲国产精品18久久久久久 | 四虎永久免费观看 | 毛片中文字幕 | 夜夜高潮夜夜爽国产伦精品 | 国产一区二区三区在线观看免费 | 天天色综合图片 | 99在线无码精品入口 | 中文字幕在线免费观看 | 欧美午夜精品久久久久久蜜 | 三级网站 | 欧美日韩国产大片 | 日韩男女啪啪 | 国产乱淫a∨片免费观看 | 一级做a爱片久久毛片 | 国产女主播在线观看 | 色眯眯影视 | 成人依人|