3.1.7求字節(jié)數(shù)運(yùn)算符
C++提供了一個(gè)有用的運(yùn)算符sizeof,它是一個(gè)單目運(yùn)算符,用于計(jì)算表達(dá)式或數(shù)據(jù)類型的字節(jié)數(shù),其運(yùn)算結(jié)果與不同的編譯器和機(jī)器相關(guān)。當(dāng)編寫用于進(jìn)行文件輸入/輸出操作或給動(dòng)態(tài)列表分配內(nèi)存的程序時(shí),用戶將發(fā)現(xiàn),如能知道程序給這些特定變量所分配內(nèi)存的大小將會(huì)很方便。 例如3-1:
當(dāng)我們進(jìn)行算術(shù)運(yùn)算時(shí),如果運(yùn)算結(jié)果超出變量所能表達(dá)的數(shù)據(jù)范圍時(shí),就會(huì)發(fā)生溢出。而利用sizeof運(yùn)算符計(jì)算變量所占的字節(jié)數(shù),也就是說,可以算出變量的數(shù)據(jù)范圍,從而可以避免可能出現(xiàn)的錯(cuò)誤。
例3-1
#include
int main (void)
{
cout << "char size = " << sizeof(char) << " bytes\n";
cout << "char* size = " << sizeof(char*) << " bytes\n";
cout << "short size = " << sizeof(short) << " bytes\n";
cout << "int size = " << sizeof(int) << " bytes\n";
cout << "long size = " << sizeof(long) << " bytes\n";
cout << "float size = " << sizeof(float) << " bytes\n";
cout << "double size = " << sizeof(double) << " bytes\n";
cout << "1.55 size = " << sizeof(1.55) << " bytes\n";
cout << "1.55L size = " << sizeof(1.55L) << " bytes\n";
cout << "HELLO size = " << sizeof("HELLO") << " bytes\n";
}
我們運(yùn)行這個(gè)程序,產(chǎn)生下面的結(jié)果(在作者的PC機(jī)上):
char size = 1 bytes
char* size = 2 bytes
short size = 2 bytes
int size = 2 bytes
long size = 4 bytes
float size = 4 bytes
double size = 8 bytes
1.55 size = 8 bytes
1.55L size = 10 bytes
HELLO size = 6 bytes
表3-10
類型 運(yùn)算 運(yùn)算符
求字節(jié)數(shù)運(yùn)算符 求字節(jié)大小 sizeof
下表給出了常用數(shù)據(jù)類型的字節(jié)數(shù)。具體的例子可參考書中給出的例子。當(dāng)我們進(jìn)行算術(shù)運(yùn)算時(shí),如果運(yùn)算結(jié)果超出變量所能表達(dá)的數(shù)據(jù)范圍時(shí),就會(huì)發(fā)生溢出。如果我們能夠利用sizeof運(yùn)算符計(jì)算變量所占的字節(jié)數(shù),就可算出變量的數(shù)據(jù)范圍,從而可以避免可能出現(xiàn)的錯(cuò)誤。
下表給出了常用數(shù)據(jù)類型的字節(jié)數(shù)。具體的例子可參考書中給出的例子。
表3-11
數(shù)據(jù)類型 占用字節(jié)數(shù)
Char 1
Char * 4
Short 2
Int 4(VC 6.0)2 (VC 1.5x)
Long 4
Float 4
Double 8
C++提供了一個(gè)有用的運(yùn)算符sizeof,它是一個(gè)單目運(yùn)算符,用于計(jì)算表達(dá)式或數(shù)據(jù)類型的字節(jié)數(shù),其運(yùn)算結(jié)果與不同的編譯器和機(jī)器相關(guān)。當(dāng)編寫用于進(jìn)行文件輸入/輸出操作或給動(dòng)態(tài)列表分配內(nèi)存的程序時(shí),用戶將發(fā)現(xiàn),如能知道程序給這些特定變量所分配內(nèi)存的大小將會(huì)很方便。 例如3-1:
當(dāng)我們進(jìn)行算術(shù)運(yùn)算時(shí),如果運(yùn)算結(jié)果超出變量所能表達(dá)的數(shù)據(jù)范圍時(shí),就會(huì)發(fā)生溢出。而利用sizeof運(yùn)算符計(jì)算變量所占的字節(jié)數(shù),也就是說,可以算出變量的數(shù)據(jù)范圍,從而可以避免可能出現(xiàn)的錯(cuò)誤。
例3-1
#include
int main (void)
{
cout << "char size = " << sizeof(char) << " bytes\n";
cout << "char* size = " << sizeof(char*) << " bytes\n";
cout << "short size = " << sizeof(short) << " bytes\n";
cout << "int size = " << sizeof(int) << " bytes\n";
cout << "long size = " << sizeof(long) << " bytes\n";
cout << "float size = " << sizeof(float) << " bytes\n";
cout << "double size = " << sizeof(double) << " bytes\n";
cout << "1.55 size = " << sizeof(1.55) << " bytes\n";
cout << "1.55L size = " << sizeof(1.55L) << " bytes\n";
cout << "HELLO size = " << sizeof("HELLO") << " bytes\n";
}
我們運(yùn)行這個(gè)程序,產(chǎn)生下面的結(jié)果(在作者的PC機(jī)上):
char size = 1 bytes
char* size = 2 bytes
short size = 2 bytes
int size = 2 bytes
long size = 4 bytes
float size = 4 bytes
double size = 8 bytes
1.55 size = 8 bytes
1.55L size = 10 bytes
HELLO size = 6 bytes
表3-10
類型 運(yùn)算 運(yùn)算符
求字節(jié)數(shù)運(yùn)算符 求字節(jié)大小 sizeof
下表給出了常用數(shù)據(jù)類型的字節(jié)數(shù)。具體的例子可參考書中給出的例子。當(dāng)我們進(jìn)行算術(shù)運(yùn)算時(shí),如果運(yùn)算結(jié)果超出變量所能表達(dá)的數(shù)據(jù)范圍時(shí),就會(huì)發(fā)生溢出。如果我們能夠利用sizeof運(yùn)算符計(jì)算變量所占的字節(jié)數(shù),就可算出變量的數(shù)據(jù)范圍,從而可以避免可能出現(xiàn)的錯(cuò)誤。
下表給出了常用數(shù)據(jù)類型的字節(jié)數(shù)。具體的例子可參考書中給出的例子。
表3-11
數(shù)據(jù)類型 占用字節(jié)數(shù)
Char 1
Char * 4
Short 2
Int 4(VC 6.0)2 (VC 1.5x)
Long 4
Float 4
Double 8