溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

C語言中各類變量和零值比較的示例分析

發(fā)布時(shí)間:2022-03-04 10:50:03 來源:億速云 閱讀:149 作者:小新 欄目:開發(fā)技術(shù)

這篇文章給大家分享的是有關(guān)C語言中各類變量和零值比較的示例分析的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。

1.波爾變量和零值比較

在C語言中本來是不存在bool類型的,但在C99標(biāo)準(zhǔn)中加入了bool類型。

C語言中各類變量和零值比較的示例分析

在C99標(biāo)準(zhǔn)中引入了_Bool類型,在vs中將bool類型進(jìn)行了宏定義,而_Bool類型使微軟自己設(shè)計(jì)的一種類型,在別的編譯器上不具有可移植性,故這里我們使用bool類型。

接下來我們進(jìn)入我們的正題:

假設(shè)布爾變量名稱為flag,那它與零值的比較在if語句中表示如下:

if(flag)          //表示flag為真

if(!flag)       //表示flag為假  

在C++標(biāo)準(zhǔn)中,布爾類型常量和整數(shù)、指針之間的轉(zhuǎn)換規(guī)則為:

false->0 true->1

0->false true->非0值

但對(duì)于不同的實(shí)現(xiàn)對(duì)ture的表示也可以不同,所以我們要避免一下操作:

int flag = 1;
if(flag==ture){
   ;
}

因此以后在進(jìn)行bool類型與零比較時(shí),我們避免使用判斷形式。

2.整形變量和零進(jìn)行比較

假設(shè)整形變量為ret,它與零值進(jìn)行比較的if語句可以表示為:

if(ret==0)   

if(ret!=0)

不可以寫成bool的類型風(fēng)格

if(ret)   //會(huì)讓人錯(cuò)以為ret使bool類型

if(!ret)  

3.浮點(diǎn)變量和零值比較

這里也是我們今天所講述的重點(diǎn)。

這里我們先來看一段代碼:

C語言中各類變量和零值比較的示例分析

在我們的看來,x和y不應(yīng)該一樣嗎?為什么這里卻有如此大的差別?

這里涉及到了浮點(diǎn)數(shù)的存數(shù)和缺失。

讓我們?cè)诳匆欢未a:

C語言中各類變量和零值比較的示例分析 

在數(shù)學(xué)上我們認(rèn)為這兩個(gè)數(shù)使不相等的,但在32位計(jì)算器上認(rèn)為這兩個(gè)數(shù)是相等的。

所以我們?nèi)绻麅蓚€(gè)同符號(hào)的浮點(diǎn)數(shù)的差的絕對(duì)值在一個(gè)范圍內(nèi)我們就認(rèn)為這兩個(gè)數(shù)使相等的,否則激素不相等的。所以我們應(yīng)該怎樣去實(shí)現(xiàn)呢?

代碼如下:

C語言中各類變量和零值比較的示例分析

我們引入了<math.h>和<float.h>兩個(gè)頭文件來實(shí)現(xiàn)我們的需求,這里我們引入了FLT_EPSILON 這個(gè)精度范圍來比較兩個(gè)float類型的數(shù),除了這個(gè)精度范圍還有DBL_EPSILON精度范圍用來比較double類型,這里我們就不舉例了。

4.指針和零值比較

指針變量的空為NULL,即不指向任何對(duì)象,盡管NULL和0值相同,但表達(dá)意義卻不同。

C語言中各類變量和零值比較的示例分析

假設(shè)指針變量為p,它與零值比較的if語句實(shí)現(xiàn)為:

if(p==NULL)        //p與NULL比較,來顯示p使指針變量

if(p!=NULL)

 盡量避免寫成如下形式

if(p)     //容易誤解成bool類型變量

if(!p)

或者這種

if(p==0)   //容易誤解成整形類型變量

if(p!=0)

感謝各位的閱讀!關(guān)于“C語言中各類變量和零值比較的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI