C++ 中有符號和無符號整數表示式之間的比較

Muhammad Adil 2022年7月18日
C++ 中有符號和無符號整數表示式之間的比較

C++ 是一種通用程式語言。它的設計偏向於系統程式設計,但也廣泛用於商業世界。

C++ 中有符號和無符號整數表示式的比較

C++ 支援有符號和無符號整數,它們被寫為 intunsigned int。使用有符號整數時,可以使用關係運算子來比較兩個值。

關係運算子將不起作用,因為它們在使用無符號整數時總是評估 falsetrue

在大多數處理器上,有符號數字通常比無符號整數快,因為它們比無符號整數使用更少的記憶體。

有符號整數比無符號整數需要更多記憶體,因為它們儲存負數和正數。這意味著對於給定數量的資料,有符號整數將比無符號整數使用更多的記憶體。

雖然無符號整數只能表示正數,但如果將兩個不同的值相加,對於無符號整數,你將始終得到具有相同符號(+-)的結果。對於有符號整數,如果你新增兩個不同的值,你將得到具有兩個不同符號(+-)的結果。

C++ 編譯器警告

編譯器會警告有符號和無符號型別之間的比較,因為有符號和無符號 int 的範圍會有所不同,並且可能會產生意想不到的效能。

它也不能保證程式的安全性,因為有符號和無符號整數表示式是混合的。當負數轉換為無符號型別或正數轉換為有符號型別時,可能會發生這種情況。

如果表示式只有一個運算元,即有符號型別,其值適合目標型別,編譯器不會警告你。

讓我們討論一個示例,以更好地瞭解編譯器如何發出警告。

#include <iostream>
#include <string>
using namespace std;

int helloWorld(string input);
int main()
{
  string input;
  input = "sample";
    helloWorld(input);
}
int helloWorld(string input)
{
    int demo = 0;
    for ( int x = 0; x < input.length(); x++)
  {
    if (input.substr(x,4) == " " )
    {
    demo++;
    }
  }
   cout << demo;
}

點選此連結,檢視程式碼的實時演示。

Muhammad Adil avatar Muhammad Adil avatar

Muhammad Adil is a seasoned programmer and writer who has experience in various fields. He has been programming for over 5 years and have always loved the thrill of solving complex problems. He has skilled in PHP, Python, C++, Java, JavaScript, Ruby on Rails, AngularJS, ReactJS, HTML5 and CSS3. He enjoys putting his experience and knowledge into words.

Facebook

相關文章 - C++ Integer