首頁 > 後端開發 > C++ > C 如何處理有符號整數和無符號整數之間的比較?

C 如何處理有符號整數和無符號整數之間的比較?

Linda Hamilton
發布: 2024-12-07 00:16:11
原創
999 人瀏覽過

How Does C   Handle Comparisons Between Signed and Unsigned Integers?

C 中有符號和無符號類型的比較

在C 中,當將有符號整數與無符號整數進行比較時,有符號整數將提升為無符號整數。這意味著負號被忽略,整數被視為一個大的正值。

考慮以下 C 程式:

#include <iostream>
#include <vector>

int main() {
    std::vector<int> a;
    std::cout << "Vector size: " << a.size() << std::endl;

    int b = -1;
    if (b < a.size())
        std::cout << "Less";
    else
        std::cout << "Greater";
}
登入後複製

在這個程式中,向量 a 的大小是一個無符號整數。但是,當將其與有符號整數 b 進行比較時,b 會被提升為無符號整數。這表示負號被忽略,b 被視為一個大的正值。因此,比較b<0。 a.size() 將始終為 false,並且程式將列印“Greater”。

要更清楚地看到此行為,請考慮以下程式碼範例:

#include <iostream>

int main()
{
    unsigned int a = 0;
    int b = -1;
    std::cout << std::boolalpha;
    std::cout << (b < a) << "\n";
}
登入後複製

此程式將輸出 false,即使 b 明顯小於 a。這是因為 b 被提升為無符號整數,且負號被忽略。

以上是C 如何處理有符號整數和無符號整數之間的比較?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板