日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++基本内置类型

發布時間:2024/4/18 c/c++ 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++基本内置类型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

基本內置類型包括算術類型空類型。

算術類型

算術類型包括整型浮點型

類型含義最小尺寸
bool布爾型-
char字符型8 bit
wchar_t寬字符型16 bit
short短整型16 bit
int整形16 bit
long長整型32 bit
long long長整型64 bit
float單精度浮點型6位有效數字
double雙精度浮點型10位有效數字
long double擴展精度浮點型10位有效數字

C++中規定,一個int至少和一個short一樣大,一個long至少和一個int一樣大,一個long long則至少和一個long一樣大,其中,數據類型long long是在C++11中新定義的。

通過代碼查看當前編譯器各種類型所占尺寸。

#include<iostream> using namespace std;int main() {cout << "bool\t" << sizeof(bool) << endl;cout << "char\t" << sizeof(char) << endl;cout << "wchar_t\t" << sizeof(wchar_t) << endl;cout << "short\t" << sizeof(short) << endl;cout << "int\t" << sizeof(int) << endl;cout << "long\t" << sizeof(long) << endl;cout << "long long\t" << sizeof(long long) << endl;cout << "float\t" << sizeof(float) << endl;cout << "double\t" << sizeof(double) << endl;cout << "long double\t" << sizeof(long double) << endl;system("pause");return 0; }

運行結果

bool 1 char 1 wchar_t 2 short 2 int 4 long 4 long long 8 float 4 double 8 long double 8 請按任意鍵繼續. . .
  • 如何選取算術類型?

和C語言一樣,C++的設計準則之一也是盡可能的接近硬件。C++的算術類型必須滿足各種硬件特質,所以他們常常顯得復雜而令人不知所措。事實上,大多數程序員能夠(也應該)對數據類型的使用做出限定從而簡化選擇過程。以下是選擇類型的一些經驗準則:
1:當明確知曉數值不可能為負時,選用無符號類型
2:使用int 執行整數運算。在實際應用中,short 常常顯得太小而long 一般和 int 有一樣的尺寸。如果你的數值超過了int 的表示范圍,選用long long
3:在算術表達式中不要使用char 或 bool,只用在存放字符或布爾值時才使用它們。因為類型char在一些機器上是有符號的,而另一些機器上又是無符號的,所以,如果使用char進行運算特別容易出問題。如果你需要使用一個不大的整數,那么明確指定的類型是 signed char 或者unsigned char;
4:執行浮點數運算選用double,這是因為float通常精度不夠而且double和float的計算相差無幾。事實上,對于某些機器來說,雙精度運算甚至比單精度還快,long double提供的精度一般情況下是沒有必要的,況且他帶來的運行時消耗也不容忽視。

帶符號和無符號類型

除去布爾型和擴展的字符型之外,其他整型可以劃分為帶符號的和無符號的兩種。帶符號類型可以表示正數、負數和0,無符號類型則僅能表示大于等于0的值。

類型int、short、long和long long都是帶符號的,通過在這些類型名前添加unsigned就可以得到無符號類型,例如unsigned long。類型unsigned int可以編寫為unsigned。

與其他整型不同,字符型被分為了三種:char、signed char和unsigned char。特別需要注意的是:類型char和類型signed char并不一樣。盡管字符型有三種,但是字符的表現形式卻只有兩種:帶符號的和無符號的。類型char實際上會表現為上述兩種形式中的一種,具體是哪種由編譯器來決定。

類型的轉換

類型所能表示的值的范圍決定了轉換的過程:

  • 當我們把一個非布爾型的算術值賦給布爾類型時,初始值0則結果是false,否則結果為true。例如:bool b=42;
  • 當我們把一個布爾型值賦給一個非布爾型時,初始值為false則結果是0,初始值為true則結果為1.
  • 當我們把一個浮點數賦給整型類型時,進行了近似處理。結果值將僅保留浮點數中小數點之前的部分。
  • 當我們把一個整數值賦給浮點類型時,小數部分記為0。如果該整數所占的空間超過了浮點類型的容量,精度可能有損失。
  • 當我們賦給無符號類型一個超過它表示范圍的值時,結果是初始值對無符號類型表示數值總數取模后的余數。例如,8比特大小的unsigned char可以表示0至255區間內的值,如果我們賦了一個區間以外的值,則實際的結果是該值對256取模后所得的余數。因此,將-1賦給8比特的unsigned char 所得的結果是255.
  • 當我們賦給帶符號類型一個超出它表示范圍的值時,結果是未定義的。此時,程序可能繼續工作、可能崩潰,也可能生成垃圾數據。

含有無符號類型的表達式

盡管我們不會故意給無符號對象賦一個負值,卻可能寫出這么做的代碼。例如,當一個算術表達式中既有無符號數又有int值時,那個int值就會轉換為無符號數。把int轉換為無符號數的過程和把int直接覆給無符號變量一樣:

unsigned u=10; int i=-42; cout<<i+i<<endl; //輸出-84 cout<<u+i<<endl; //如果int占32位,輸出4294967264

在第一個輸出表達式里,兩個(負)整數相加并得到了期望的結果。在第二個輸出表達式里,相加前首先把整數-42轉換為無符號數。把負數轉換為無符號數類似于直接給無符號數賦一個負值,結果等于這個負數加上無符號數的模。

當從無符號數中減去一個值時,不過這個值是不是無符號的數,我們都必須確保結果不能是一個負值。

如果表達式里既有帶符號類型又有無符號類型,當帶符號類型取值為負時會出現異常結果,這是因為帶符號數會自動轉換為無符號數。例如,在一個形如”a*b"的式子中,如果a=-1,b=1,而且a是int,b是unsigned,則結果須視在當前機器上int所占位數而定。

總結

以上是生活随笔為你收集整理的C++基本内置类型的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。