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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

C++基本内置类型

發(fā)布時(shí)間:2024/4/18 c/c++ 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++基本内置类型 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

基本內(nèi)置類型包括算術(shù)類型空類型

算術(shù)類型

算術(shù)類型包括整型浮點(diǎn)型

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

C++中規(guī)定,一個(gè)int至少和一個(gè)short一樣大,一個(gè)long至少和一個(gè)int一樣大,一個(gè)long long則至少和一個(gè)long一樣大,其中,數(shù)據(jù)類型long long是在C++11中新定義的。

通過(guò)代碼查看當(dāng)前編譯器各種類型所占尺寸。

#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; }

運(yùn)行結(jié)果

bool 1 char 1 wchar_t 2 short 2 int 4 long 4 long long 8 float 4 double 8 long double 8 請(qǐng)按任意鍵繼續(xù). . .
  • 如何選取算術(shù)類型?

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

帶符號(hào)和無(wú)符號(hào)類型

除去布爾型和擴(kuò)展的字符型之外,其他整型可以劃分為帶符號(hào)的和無(wú)符號(hào)的兩種。帶符號(hào)類型可以表示正數(shù)、負(fù)數(shù)和0,無(wú)符號(hào)類型則僅能表示大于等于0的值。

類型int、short、long和long long都是帶符號(hào)的,通過(guò)在這些類型名前添加unsigned就可以得到無(wú)符號(hào)類型,例如unsigned long。類型unsigned int可以編寫(xiě)為unsigned。

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

類型的轉(zhuǎn)換

類型所能表示的值的范圍決定了轉(zhuǎn)換的過(guò)程:

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

含有無(wú)符號(hào)類型的表達(dá)式

盡管我們不會(huì)故意給無(wú)符號(hào)對(duì)象賦一個(gè)負(fù)值,卻可能寫(xiě)出這么做的代碼。例如,當(dāng)一個(gè)算術(shù)表達(dá)式中既有無(wú)符號(hào)數(shù)又有int值時(shí),那個(gè)int值就會(huì)轉(zhuǎn)換為無(wú)符號(hào)數(shù)。把int轉(zhuǎn)換為無(wú)符號(hào)數(shù)的過(guò)程和把int直接覆給無(wú)符號(hào)變量一樣:

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

在第一個(gè)輸出表達(dá)式里,兩個(gè)(負(fù))整數(shù)相加并得到了期望的結(jié)果。在第二個(gè)輸出表達(dá)式里,相加前首先把整數(shù)-42轉(zhuǎn)換為無(wú)符號(hào)數(shù)。把負(fù)數(shù)轉(zhuǎn)換為無(wú)符號(hào)數(shù)類似于直接給無(wú)符號(hào)數(shù)賦一個(gè)負(fù)值,結(jié)果等于這個(gè)負(fù)數(shù)加上無(wú)符號(hào)數(shù)的模。

當(dāng)從無(wú)符號(hào)數(shù)中減去一個(gè)值時(shí),不過(guò)這個(gè)值是不是無(wú)符號(hào)的數(shù),我們都必須確保結(jié)果不能是一個(gè)負(fù)值。

如果表達(dá)式里既有帶符號(hào)類型又有無(wú)符號(hào)類型,當(dāng)帶符號(hào)類型取值為負(fù)時(shí)會(huì)出現(xiàn)異常結(jié)果,這是因?yàn)閹Х?hào)數(shù)會(huì)自動(dòng)轉(zhuǎn)換為無(wú)符號(hào)數(shù)。例如,在一個(gè)形如”a*b"的式子中,如果a=-1,b=1,而且a是int,b是unsigned,則結(jié)果須視在當(dāng)前機(jī)器上int所占位數(shù)而定。

總結(jié)

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

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。