青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

唐吉訶德

  C++博客 :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
  5 Posts :: 75 Stories :: 3 Comments :: 0 Trackbacks

常用鏈接

留言簿(2)

我參與的團隊

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

這是程序員面試的一道常見題,也是個C++基礎(chǔ)問題。若只在大學(xué)里看過幾本基礎(chǔ)的編程入門書,看見這道題可能會覺得奇怪,不就是和0比較嗎,直接拿出來比就是了,其實非也。下文引自google搜索結(jié)果,出處不詳,高手可以無視,菜菜留下,記得做好筆記。
首先給個提示:題目中要求的是零值比較,而非與0進行比較,在C++里“零值”的范圍可就大了,可以是0, 0.0 , FALSE或者“空指針”。
int型變量 n 與“零值”比較的 if 語句就是:

if ( n == 0 )

if ( n != 0 )

如下寫法均屬不良風(fēng)格.。

if ( n )               // 會讓人誤解 n 是布爾變量

if ( !n   )

 BOOL flag 與“零值”比較的 if 語句:

根 據(jù)布爾類型的語義,零值為“假”(記為FALSE),任何非零值都是“真”(記為TRUE)。TRUE 的值究竟是什么并沒有統(tǒng)一的標(biāo)準(zhǔn)。例如Visual C++ 將TRUE 定義為1,而Visual Basic 則將TRUE 定義為-1。所以我們不可以將布爾變量直接與TRUE、FALSE 或者1、0 進行比較。

標(biāo)準(zhǔn)答案:

if ( flag )

if ( !flag )

如下寫法均屬不良風(fēng)格。

if (flag == TRUE)

if (flag == 1 )

if (flag == FALSE)

if (flag == 0)

float x 與“零值”比較的 if 語句:
千萬要留意,無論是float 還是double 類型的變量,都有精度限制,都不可以用“==”或“!=”與任何數(shù)字比較,應(yīng)該設(shè)法轉(zhuǎn)化成“>=”或“<=”形式。(為什么?文章之后有詳細(xì)的討論,可參考)

假設(shè)浮點變量的名字為x,應(yīng)當(dāng)將

if (x == 0.0)         // 隱含錯誤的比較

轉(zhuǎn)化為

if ((x>=-EPSINON) && (x<=EPSINON))

其中EPSINON 是允許的誤差(即精度)。

標(biāo)準(zhǔn)答案示例:

const float EPSINON = 0.00001;

if ((x >= - EPSINON) && (x <= EPSINON)

如下是錯誤的寫法。

if (x == 0.0)

if (x != 0.0) 

char *p 與“零值”比較的 if 語句:

標(biāo)準(zhǔn)答案:

if (p == NULL)

if (p != NULL)

如下寫法均屬不良風(fēng)格。

if (p == 0)         // 容易讓人誤解p是整型變量

if (p != 0)

if (p)                 // 容易讓人誤解p是bool型變量

if (!p)

以 上的不良風(fēng)格很多都能通過編譯,但是語句并不能很好的表達(dá)與零值進行比較的邏輯依據(jù)。一般的,如果想用 if 語句判斷一個變量的真假,應(yīng)該直接使用if(var)、if(!var),表明此 if 語句的功能為“邏輯”判斷;如果想用 if 語句判斷一個數(shù)值型變量(short、int、long等),應(yīng)該用if(var==0),表明此 if 語句是將變量與0進行“數(shù)值”上的比較;而檢視指針是否為空則適宜用if(var==NULL),這是一種很好的編程習(xí)慣。

浮點型變量并不精確,所以不可將float變量用“==”或“!=”與數(shù)字比較,應(yīng)該設(shè)法轉(zhuǎn)化成“>=”或“<=”形式。如果寫成if (x == 0.0),則判為錯,得0分。以下給出詳細(xì)原因:
浮點數(shù)在內(nèi)存中的存貯機制和整型數(shù)不同,有舍入誤差,在計算機中用以近似表示任意某個實數(shù)。具體的說,這個實數(shù)由一個整數(shù)或定點數(shù)(即尾數(shù))乘以某個基數(shù)(計算機中通常是2)的整數(shù)次冪得到,這種表示方法類似于基數(shù)為10的科學(xué)記數(shù)法。
所以浮點數(shù)在運算過成功運算通常伴隨著因為無法精確表示而進行的近似或舍入。但是這種設(shè)計的好處是可以在固定的長度上存儲更大范圍的數(shù)。
例如,一個指數(shù)范圍為±4的4位十進制浮點數(shù)可以用來表示43210,4.321或0.0004321,但是沒有足夠的精度來表示432.123和43212.3(必須近似為432.1和43210)。當(dāng)然,實際使用的位數(shù)通常遠(yuǎn)大于4。
所以浮點數(shù)不能夠判斷相等,像 if(x==0)的這樣的編碼是不總是正確的,我們在判斷浮點數(shù)相等時,推薦用范圍來確定,若x在某一范圍內(nèi),我們就認(rèn)為相等,至于范圍怎么定義,要看實際情況而已了,float,和double 各有不同
所以const float EPSINON = 0.00001;
if ((x >= - EPSINON) && (x <= EPSINON) 這樣判斷是可取的
至于為什么取0.00001,可以自己按實際情況定義

再看下面CSDN上的回答

引用
#define   E   1.0E-6  

float   x   與“零值”比較的if  
-----------------------  

浮點數(shù)是不可以直接比較大小的,因為是非精確存儲,只能設(shè)置一個精度,然后在允許誤差內(nèi)的就認(rèn)為是相等的;對浮點型數(shù)比較的時候用==是不對的  

#define   E   0.000001      

fabs((a+b)+c)   -   ((b+a)+c))
posted on 2010-08-26 08:36 心羽 閱讀(581) 評論(0)  編輯 收藏 引用 所屬分類: C/C++
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久日韩精品| 一区二区三区在线高清| 欧美在线视频一区二区| 国产精品嫩草久久久久| 欧美成人精品在线观看| 欧美亚洲综合久久| 日韩一级二级三级| 亚洲高清av| 久久久www| 欧美一级欧美一级在线播放| 亚洲黄一区二区| 尤物九九久久国产精品的特点| 国产精品欧美激情| 国产精品社区| 国内久久婷婷综合| 亚洲激情在线观看| 亚洲激情啪啪| 一本色道久久| 亚洲影院在线| 久久精品综合网| 欧美成人r级一区二区三区| 久久综合狠狠综合久久激情| 欧美成人精品三级在线观看| 美女视频网站黄色亚洲| 毛片一区二区| 一区二区三区偷拍| 亚洲伊人伊色伊影伊综合网| 久久精品国产清自在天天线| 久久精品国产亚洲5555| 欧美不卡三区| 国产婷婷色一区二区三区四区 | 国产一区二区观看| 国产专区综合网| 日韩视频三区| 国产精品成人av性教育| 欧美伦理影院| 国产精品中文在线| 99av国产精品欲麻豆| 欧美一区二区三区视频在线观看| 欧美国产综合视频| 久久久久久伊人| 国产午夜精品久久| 久久gogo国模啪啪人体图| avtt综合网| 国产精品免费网站在线观看| 在线亚洲欧美专区二区| 日韩视频一区二区三区在线播放| 久久性天堂网| 亚洲免费观看| 一区二区三区 在线观看视频| 欧美日本一区| 欧美一区视频| 久久一区二区三区国产精品 | 噜噜爱69成人精品| 麻豆视频一区二区| 亚洲一区免费网站| 欧美一区二区在线看| 伊人蜜桃色噜噜激情综合| 欧美黄色免费网站| 国产精品三区www17con| 久久综合九色综合欧美狠狠| 欧美成黄导航| 久久精品成人一区二区三区| 老牛国产精品一区的观看方式| 一区二区三区免费观看| 久久免费精品视频| 夜夜爽夜夜爽精品视频| 欧美一区二区视频在线观看2020| 日韩香蕉视频| 亚洲一区制服诱惑| 亚洲欧美另类在线| 欧美日韩国产首页在线观看| 久久婷婷蜜乳一本欲蜜臀| 国产精品九九| 制服丝袜激情欧洲亚洲| 国语自产在线不卡| 亚洲小说欧美另类社区| 亚洲激情在线播放| 欧美国产综合视频| 欧美高清自拍一区| 精品福利电影| 欧美国产精品一区| 亚洲日本成人网| 一区二区三区免费观看| 欧美视频一区二区| 亚洲一区二区三| 久久人人爽爽爽人久久久| 欧美一区二区三区免费观看视频 | 久久久久久久久蜜桃| 久久精品2019中文字幕| 国产欧美91| 美女性感视频久久久| 91久久精品国产91性色 | 久久久久青草大香线综合精品| 久久国产精品久久国产精品| 国产精品亚洲网站| 欧美成人第一页| 亚洲综合色丁香婷婷六月图片| 欧美主播一区二区三区| 在线观看成人网| 国产精品久久国产三级国电话系列| 亚洲一区二区高清视频| 狂野欧美激情性xxxx| 亚洲视频免费看| 亚洲高清123| 国产精品一二三| 欧美精品激情在线观看| 久久激情中文| 亚欧成人精品| 亚洲在线视频网站| 亚洲精品韩国| 亚洲日本欧美在线| 你懂的成人av| 久久中文字幕一区| 欧美中文日韩| 性欧美在线看片a免费观看| 亚洲美女精品久久| 最近中文字幕日韩精品| 亚洲电影观看| 亚洲人在线视频| 亚洲欧洲精品一区二区三区| 国产日韩成人精品| 国内在线观看一区二区三区| 国产性做久久久久久| 国产麻豆精品久久一二三| 亚洲精品小视频在线观看| 亚洲黄色三级| 99国内精品久久久久久久软件| 亚洲大片精品永久免费| 欧美激情视频免费观看| 亚洲黄页视频免费观看| 日韩午夜中文字幕| 香蕉久久a毛片| 六月天综合网| 国产精品日韩一区二区| 亚洲理论在线观看| 亚洲午夜精品| 久久久久久欧美| 欧美日韩亚洲一区二区三区| 欧美婷婷六月丁香综合色| 国产日韩欧美制服另类| 国产免费观看久久黄| 亚洲国产精品成人综合| 欧美国产日本在线| 国内精品伊人久久久久av一坑| 亚洲国产视频a| 欧美尤物巨大精品爽| 99国产精品久久| 亚洲激情一区二区| 一区二区不卡在线视频 午夜欧美不卡'| 亚洲精品日韩综合观看成人91| 中文精品一区二区三区| 久久蜜桃香蕉精品一区二区三区| 欧美激情第三页| **网站欧美大片在线观看| 午夜在线精品偷拍| av成人免费| 欧美三级黄美女| 亚洲一区久久久| 日韩午夜在线视频| 最新国产乱人伦偷精品免费网站| 香蕉久久一区二区不卡无毒影院| 欧美久色视频| 一本色道久久综合一区 | 欧美区在线播放| 国产一区二区三区高清在线观看 | 先锋影音国产精品| 亚洲欧美激情精品一区二区| 国产精品第一区| 亚洲免费在线| 久久久精品国产免大香伊| 亚洲国产精品福利| 欧美视频二区36p| 午夜激情亚洲| 亚洲第一伊人| 午夜精品国产| 蜜臀91精品一区二区三区| 性做久久久久久久免费看| 国产日韩综合| 久久综合伊人77777| 99riav国产精品| 久久精品二区三区| 亚洲黑丝一区二区| 欧美日韩免费区域视频在线观看| 亚洲精选成人| 久久亚洲综合色| 亚洲在线观看免费| 国产曰批免费观看久久久| 欧美高清免费| 久久全国免费视频| 中文一区在线| 亚洲日本理论电影| 久久久在线视频| 一区二区精品在线| 韩国视频理论视频久久| 国产精品vip| 欧美日韩国产三级| 欧美福利视频在线| 女同性一区二区三区人了人一| 欧美一区二区三区免费在线看|