速查表:
char -128 ~ +127 (1 Byte)
unsigned char 0 ~ 255 (1 Bytes)
short -32767 ~ + 32768 (2 Bytes)
unsigned short 0 ~ 65536 (2 Bytes)
int -2147483648 ~ +2147483647 (4 Bytes)
unsigned int 0 ~ 4294967295 (4 Bytes)
long == int
long long -9223372036854775808 ~ +9223372036854775807 (8 Bytes)
unsigned long long 0 ~ 18446744073709551615 (8 Bytes)
爲方便起見,把先把表格放在了開頭,接下來是探究標準庫各個型別的數據大小,不同編譯器也有一定的差別。前提知識:#include這個原始檔中有關於型別數據大小的定義.
程式碼如下:
#include<iostream>
#include<climits>
using namespace std;
int main()
{
cout<<"char型別的位元組數(byte):"<<sizeof(char)<<"位元組"<<endl; // 1byte==8bit
cout<<"char型別的最大值和最小值:"<<CHAR_MAX<<"\t"<<CHAR_MIN<<endl;
cout<<"signed char型別的最大值和最小值:"<<SCHAR_MAX<<"\t"<<SCHAR_MIN<<endl;
cout<<"unsigned char型別的最大值(2^8-1)和最小值:"<<UCHAR_MAX<<"\t"<<0<<endl;
cout<<"short型別的最大值和最小值及位元組數:"<<SHRT_MAX<<"\t"<<SHRT_MIN<<"\t"<<sizeof(short)<<"位元組"<<endl;
cout<<"unsigned short型別的最大值和最小值及位元組數:"<<USHRT_MAX<<"\t"<<0<<endl;
cout<<"int型別的最大值和最小值及位元組數:"<<INT_MAX<<"\t"<<INT_MIN<<"\t"<<sizeof(int)<<"位元組"<<endl;
cout<<"unsigned int型別的最大值和最小值:"<<UINT_MAX<<"\t"<<0<<endl;
cout<<"long型別的最大值和最小值及位元組數:"<<LONG_MAX<<"\t"<<LONG_MIN<<'\t'<<sizeof(long)<<"位元組"<<endl;
cout<<"unsigned long型別的最大值和最小值:"<<ULONG_MAX<<"\t"<<0<<endl;
cout<<"long long型別的最大值和最小值及位元組數:"<<LLONG_MAX<<"\t"<<LLONG_MIN<<"\t"<<sizeof(long long)<<"位元組"<<endl;
cout<<"unsigned long long型別的最大值和最小值:"<<ULLONG_MAX<<"\t"<<0<<endl;
cout<<3.4E+38;
}
眼見爲實,編譯結果如圖:
這是筆者計算機上的執行結果圖。
直接從結果來看,看來上面的數據表格是沒有問題的。