国产伦精品一区二区三区无广告-国产伦精品一区二区三区在线观看-国产伦精品一区三区视频-国产伦久视频免费观看 视频-国产伦久视频免费观看视频-国产伦理精品

女性時(shí)尚和娛樂(lè)資訊網(wǎng)站

【播資訊】在 C++ 中比較數(shù)字時(shí)要小心

發(fā)布時(shí)間:2023-04-24 11:03:41   來(lái)源:Linux迷    

?C++ 是一種廣泛使用的編程語(yǔ)言,但也是編程錯(cuò)誤最常見(jiàn)的語(yǔ)言之一。其中許多錯(cuò)誤是由于邏輯錯(cuò)誤造成的。特別是,比較操作中的錯(cuò)誤可能會(huì)影響代碼的準(zhǔn)確性和可靠性。


(資料圖片僅供參考)

?C++ 語(yǔ)言中有一種特定的比較錯(cuò)誤,許多新開(kāi)發(fā)人員會(huì)忽略這種錯(cuò)誤。這種錯(cuò)誤是由于對(duì)操作符在執(zhí)行多個(gè)比較時(shí)的工作原理的錯(cuò)誤理解而導(dǎo)致的。了解如何避免這個(gè)常見(jiàn)錯(cuò)誤以及為什么會(huì)發(fā)生這個(gè)錯(cuò)誤。

C++ 中的比較

C++編程語(yǔ)言提供了許多不同的功能和工具,包括基本的操作,如比較運(yùn)算符。比較運(yùn)算符是編程語(yǔ)言中的特殊操作,您可以使用它們將數(shù)據(jù)與彼此進(jìn)行比較。開(kāi)發(fā)人員經(jīng)常使用這些運(yùn)算符,特別是在創(chuàng)建算法時(shí)。

在日常生活中,您可以在許多不同的例子中看到比較運(yùn)算符。例如,當(dāng)您在雜貨店購(gòu)物時(shí),您會(huì)心里比較價(jià)格。如果一種產(chǎn)品的價(jià)格比另一種低,您會(huì)選擇那種產(chǎn)品。

在 if-else 語(yǔ)句中經(jīng)常會(huì)看到比較運(yùn)算符。比較運(yùn)算符是檢查一個(gè)值是否大于、小于或等于另一個(gè)值的地方。有一個(gè)非常小但重要的細(xì)節(jié)不應(yīng)該忽視,即比較表達(dá)式的結(jié)果返回true或false,這是布爾值。這些值是編程中控制結(jié)構(gòu)的基本組成部分之一。

例如,在C++編程語(yǔ)言中,“==”運(yùn)算符檢查兩個(gè)值是否相等。如果這兩個(gè)值相等,結(jié)果返回 true,否則結(jié)果將是 false。

if (a == b){????return true;} else{????return false;}
比較問(wèn)題的示例

C++ 初學(xué)者常犯的一個(gè)錯(cuò)誤是使用比較運(yùn)算符。這些運(yùn)算符允許程序員比較兩個(gè)值,并根據(jù)比較結(jié)果執(zhí)行不同的操作。然而,如果使用這些運(yùn)算符不正確,可能會(huì)導(dǎo)致意想不到的錯(cuò)誤。

例如,盡管表達(dá)式 3 < 15 < 10 在數(shù)學(xué)上是不正確的,但是 C++ 將其結(jié)果視為 true。您可以通過(guò)編寫(xiě)以下簡(jiǎn)單的測(cè)試程序來(lái)證明這一點(diǎn)。

首先,創(chuàng)建一個(gè)名為 linuxmi.cpp 的文件。使用您喜歡的代碼編輯器打開(kāi)此文件,并添加以下代碼:

#include int a = 15;int main(){????if (3 < a < 10)????{????????std::cout << "foo" << std::endl;????}????else????{????????std::cout << "boo" << std::endl;????}????return 0;}

您可以使用此命令來(lái)編譯和運(yùn)行代碼:

linuxmi@linuxmi:~/www.linuxmi.com$ g++ linuxmi.cpp -o linuxmi

現(xiàn)在你有一個(gè)名為 linuxmi 的程序。運(yùn)行程序并檢查其輸出。

C++ 認(rèn)為 3 < 15 < 10 是正確的,即使它在數(shù)學(xué)上是不正確的。那么造成這種結(jié)果的原因是什么?

C++中的比較問(wèn)題原因

和大多數(shù)編程語(yǔ)言一樣,C++ 從左到右讀取代碼。每個(gè)比較運(yùn)算符都會(huì)產(chǎn)生一個(gè)布爾值。布爾值不僅代表 true 和 false,還有一個(gè)數(shù)學(xué)等價(jià)物。

計(jì)算機(jī)的工作原理依賴(lài)于 0 和 1。對(duì)于計(jì)算機(jī)來(lái)說(shuō),某件事情的結(jié)果只能是 true 或 false。計(jì)算機(jī)程序通常將數(shù)字 1 視為 true,數(shù)字 0 視為 false。

再次仔細(xì)查看比較問(wèn)題,并從左到右閱讀該語(yǔ)句,你會(huì)發(fā)現(xiàn)有兩個(gè)不同的比較。第一個(gè)比較是在數(shù)字 3 和 15 之間。這是一個(gè) true 值,因?yàn)?3 小于 15。

第二個(gè)比較是針對(duì)該結(jié)果和數(shù)字 10 之間的比較。由于需要進(jìn)行數(shù)字比較,C++ 會(huì)將布爾值 true 靜默轉(zhuǎn)換為 1。1 小于 10,因此總的結(jié)果是 true。

總之,雖然這看起來(lái)像是一個(gè)數(shù)學(xué)謬誤,但對(duì)于 C++ 和計(jì)算機(jī)來(lái)說(shuō),這種說(shuō)法是正確的。

如何解決 C++ 中的比較問(wèn)題

C++ 和其他大多數(shù)編程語(yǔ)言在邏輯比較方面使用了與傳統(tǒng)數(shù)學(xué)不同的語(yǔ)法。數(shù)學(xué)表達(dá)式 3 < a < 15 的意思是“ 3 小于 a 且 a 小于 15”。然而,正如你所看到的,C++ 對(duì)這個(gè)表達(dá)式的解釋是不同的。

要在 C++ 中表示“and”,可以使用“&&”運(yùn)算符。然后,您可以將布爾表達(dá)式鏈接在一起,并使用像“&&”表示 AND,“||”表示OR和“!”表示 NOT 等運(yùn)算符構(gòu)建邏輯。像 Java 這樣的語(yǔ)言使用相同的邏輯運(yùn)算符。

使用正確的邏輯運(yùn)算符,可以修復(fù)前面示例中的錯(cuò)誤:

#include int a = 15;int main(){    if (3 < a && a < 10)    {    std::cout << "foo" << std::endl;    }    else    {    std::cout << "boo" << std::endl;    }        return 0;}

現(xiàn)在這段代碼將測(cè)試 a 值是否大于 3 以及 a 值是否小于 10。編譯并運(yùn)行程序并觀察結(jié)果。

前面的例子輸出了“foo”,但現(xiàn)在程序輸出了預(yù)期的“boo”。比較的左側(cè)(3 < a)的布爾值為true。右側(cè)的值(a < 10)為false。由于true和false始終是false,因此整個(gè)表達(dá)式的結(jié)果為false,因此條件失敗,else塊運(yùn)行。

提示:你也可以嘗試將 AND (&&) 運(yùn)算符切換為 OR (||) 并觀察不同的結(jié)果。

在 C++ 中邏輯檢查的重要性

在C++中,邏輯比較涉及使用布爾值和比較運(yùn)算符。確保使用正確的布爾值和比較運(yùn)算符來(lái)控制程序的運(yùn)行。因?yàn)镃++通常不會(huì)完全失敗,而是執(zhí)行不同的行為,所以很難發(fā)現(xiàn)格式不正確的表達(dá)式。

現(xiàn)在您知道編譯器如何忽略這個(gè)問(wèn)題,并在從左到右讀取每個(gè)比較時(shí)將其視為布爾值。在使用任何語(yǔ)言時(shí)都要注意這個(gè)問(wèn)題,并學(xué)會(huì)識(shí)別其影響,以便提前一步。

關(guān)鍵詞:

主站蜘蛛池模板: 国产精品国产三级国产普通话| 中文字幕一区二区三区精彩视频 | 最新版天堂中文在线| 日本电影娼年| 男生和女生一起差差在线观看| 亚洲国产成人久久一区www| 噜噜噜在线视频| 国产福利一区二区三区在线观看 | 波多野结衣1区| 最近手机中文字幕1页| 国产又色又爽在线观看| 精品一卡2卡三卡4卡免费网站| 欧美黑人xxxx| 亚洲欧美另类日韩| 老八吃屎奥利给原视频带声音的| 在线看无码的免费网站| 波多野结衣按摩| 一级成人理伦片| 久久精品国产99久久无毒不卡| 亚洲国产视频网| 亚洲色在线视频| 国产粉嫩嫩00在线正在播放| 番肉动漫无修在线观看网站| 中文字幕乱码无线码在线| 无翼乌日本漫画| 老少交欧美另类| 四虎影视免费永久在线观看| 天堂在线影院| 日本黄色网战| 殴美黄色| 午夜羞羞影院| 久久综合九色综合欧美狠狠| 女人被男人狂躁视频免费| 色播影院性播免费看| **aaaa**毛片在线播放| 久久免费视频网站| 国产成在线观看免费视频| 韩国伦理电影年轻的妈妈| 大学生男男澡堂69gaysex| 男人扒开女人下面狂躁动漫版| 美女扒开内裤羞羞网站|