Met the big end of data storage and small-ended problems, this your sister's confused, found that I have a serious lack of basic knowledge, ah, first understand the C + + data types on their own machine accounted for how many bytes, and these data types accounted for the size of the bytes of God and horse. All kinds of check data and then write code test, summarized in this article, to fill their basic knowledge.
Let's start by listing the data types of C + +:
Integral type: Int,long. These two also divide signed (signed) and unsigned (unsigned), of course, signed and unsigned the size of the byte is the same, regardless of him.
Boolean type: BOOL
Character Type: char,wchar_t
Floating point type: float,double
This can only be on the code verification, seemingly different data types of the machine accounted for different sizes, too powerful, I will check my 32-bit Windows system computer. I use the IDE is code::blocks, found very useful, mainly engineering documents small, not like VS2010 built a project is very big, brother this small hard disk is unbearable AH (off-topic).
First look at the whole type of bar, the code is as follows:
1234567891011121314 |
#include <iostream>
using namespace std;
int main()
{
int a;
long b;
int Byteof_int=
sizeof
(a);
int Byteof_long=
sizeof
(b);
cout <<
"int:" <<Byteof_int<<endl;
cout <<
"long:" <<Byteof_long<<endl;
return 0;
}
|
The results show:
Int:4
Long:4
Both int and long are 4 bytes (that is, 32 bits).
Other data type validation bar the above code data type is replaced by, the following results are obtained:
Bool:1
Char:1
Wchar_t:2
Float:4
Double:8
It is particularly important to note that for pointer types, it is 4 bytes because the pointer is pointing to an address and the 32-bit operating system is 4 bytes. Of course, if it's a 64-bit operating system, that's 8 bytes.
In addition, this type of int accounts for one memory unit size of the operating system. Previous 16-bit operating system a memory unit is 64 bits, so it is 2 bytes, 32 bit system a memory unit is 32 bits, so 4 bytes; 64-bit operating system a memory unit is 16 bits, so it accounts for 8 bytes.
Because MFC programming, MFC has a lot of data types Ah, see (This is only part, there are a lot of typedef and macro-defined types).
Type Bool:int, Boolean value (TRUE or FALSE)
Bstr:32-bit character Pointer
Byte:8-bit Integer, no sign
Colorref:32-bit value, which represents a color value
Dword:32-bit Integer, no sign
Long:32-bit integer with positive and negative number
Lparam:32-bit value, as a parameter of a window function or callback function
Lpcstr:32-bit pointer, pointing to a constant string
Lpstr:32-bit pointer, pointing to a string
The lpctstr:32-bit pointer, pointing to a constant string. This string can be ported to Unicode
The lptstr:32-bit pointer, pointing to a string. This string can be ported to Unicode
Lpvoid:32-bit pointer, pointing to an unspecified type of data
Lpresult:32-bit value, as a return to a window function or callback function
Uint:win16, 16-bit no sign, Win32, 32-bit no sign
Wndproc:32-bit
Word:16-bit Integer, no sign
WPARAM: A parameter of the window function, Win16 in 16bits,win32 32bits
The byte size of the C + + primary data type in the computer