淺談C語(yǔ)言=與==的區(qū)別詳解
在 C 語(yǔ)言中,最容易產(chǎn)生混淆的操作符要屬“=”與“==”。其中,“=”并不等于符號(hào),而是賦值操作符,如 x=3。除此之外,還可以在一個(gè)語(yǔ)句中向多個(gè)變量賦同一個(gè)值,即多重賦值。例如,在下面代碼中把 0 同時(shí)賦給 x、y 與 z。
x = y = z = 0;
相對(duì)于只有一個(gè)等號(hào)的賦值操作符,關(guān)系操作符中的等于操作符采用兩個(gè)等號(hào)“==”來(lái)表示。正因如此,導(dǎo)致了一個(gè)潛在的問(wèn)題:出于習(xí)慣,我們可能經(jīng)常將需要等于操作符的地方寫成賦值操作符,如下面的代碼:
int x=10;
int y=1;
if(x=y)
{
/*處理代碼*/
}
在上面的代碼中,if 語(yǔ)句看起來(lái)好像是要檢查變量 x 是否等于變量 y。實(shí)際上并非如此,此時(shí)if語(yǔ)句將變量 y 的值賦給變量 x 并檢查結(jié)果是否為非零。因此,雖然這里的 x 不等于 y,但是 y 的值為 1,if 語(yǔ)句還是會(huì)返回真。
當(dāng)然,當(dāng)確實(shí)需要先對(duì)一個(gè)變量進(jìn)行賦值之后再檢查變量是否非零時(shí),可以考慮顯式給出比較符。示例代碼如下:
int x=10;
int y=1;
if((x=y) != 0)
{
/*處理代碼*/
}
這樣,程序的可讀性就得到了很大提高。
上面的示例代碼詳細(xì)地闡述了將等于操作符“==”誤寫成賦值操作符“=”所帶來(lái)的嚴(yán)重后果。同理,將賦值操作符“=”誤寫成等于操作符“==”也會(huì)帶來(lái)非常嚴(yán)重的后果。示例代碼如下:
int x=0;
int y=-1;
if((x==y)<0)
{
printf("y<0\n");
}
在上面的代碼中,if 語(yǔ)句的本意是將變量 y 的值賦給變量 x,然后再判斷變量 x 的值是否小于 0。如果變量 x 的值小于 0,就執(zhí)行語(yǔ)句 printf("y<0\n")。由于錯(cuò)誤地將賦值操作符“=”誤寫成等于操作符“==”,所以無(wú)論變量 y 為何值,都不會(huì)執(zhí)行語(yǔ)句 printf("y<0\n")。原因是等于操作符“==”的結(jié)果只能是 0 或 1,永遠(yuǎn)不會(huì)小于 0。
除此之外,為了防止將等于操作符“==”誤寫成賦值操作符“=”,還可以在代碼中采用如下形式:
int x=0;
if(0==x)
{
}
這樣,就可以在一定程度上避免誤寫的發(fā)生。
到此這篇關(guān)于淺談C語(yǔ)言=與==的區(qū)別詳解的文章就介紹到這了,更多相關(guān)C語(yǔ)言=與==內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
OpenCV實(shí)現(xiàn)無(wú)縫克隆算法的步驟詳解
借助無(wú)縫克隆算法,您可以從一張圖像中復(fù)制一個(gè)對(duì)象,然后將其粘貼到另一張圖像中,從而形成一個(gè)看起來(lái)無(wú)縫且自然的構(gòu)圖。本文將詳解OpenCV實(shí)現(xiàn)無(wú)縫克隆算法的步驟,需要的可以參考一下2022-06-06
C語(yǔ)言使用順序表實(shí)現(xiàn)電話本功能
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言使用順序表實(shí)現(xiàn)電話本功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02
用c語(yǔ)言實(shí)現(xiàn)一個(gè)電話薄(附完整代碼)
大家好,本篇文章主要講的是用c語(yǔ)言實(shí)現(xiàn)一個(gè)電話薄(附完整代碼),感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽2022-01-01
關(guān)于C++中的static關(guān)鍵字的總結(jié)
C++的static有兩種用法:面向過(guò)程程序設(shè)計(jì)中的static和面向?qū)ο蟪绦蛟O(shè)計(jì)中的static。前者應(yīng)用于普通變量和函數(shù),不涉及類;后者主要說(shuō)明static在類中的作用2013-09-09
C語(yǔ)言結(jié)構(gòu)體嵌套與對(duì)齊超詳細(xì)講解
這篇文章主要介紹了C語(yǔ)言結(jié)構(gòu)體嵌套與對(duì)齊,C語(yǔ)言中結(jié)構(gòu)體是一種構(gòu)造類型,和數(shù)組、基本數(shù)據(jù)類型一樣,可以定義指向該種類型的指針。結(jié)構(gòu)體指針的定義類似其他基本數(shù)據(jù)類型的定義2022-12-12

