Jump to content
  • Advertisement

Archived

This topic is now archived and is closed to further replies.

int, float, long, DWORD, all the same size?

This topic is 5640 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

i thought a long was a integer with a bigger capacity, float had more bytes, and DWORD was a big honkin variable. but they are all 4 bytes??? in otherwords, if you declare a variable as a long it has the same maximum value as a variable defined as int?

Share this post


Link to post
Share on other sites
Advertisement
''int'' is generally a type whose size equals the size of the word on a particular processor.

thus, on dos/win16 int is 2 bytes long, and on win32 it''s 4 bytes long.

for dos/win16 architectures, long used to refer to a doubleword, and was 4 bytes long. on win32, it''s still a referred to as a doubleword, following the convention that a word is two bytes long, even though technically a word on 32-bit processor is 4 bytes long. long kept its 4 byte length.

so, int and long on win32 have the same size.

Share this post


Link to post
Share on other sites
if you really want an int to be 16-bit, do this:
short int a_variable;

this comes out to a 16-bit value and on both 16 and 32-bit compilers.

long int another_variable;

will be 32-bit on both 16 and 32-bit compilers. Try this program to see how many bytes your compiler gives each variable:

  
#include <iostream>
using namespace std;

int main(void) {

cout << "The size of an int: " << sizeof(int) << "\n";
cout << "The size of a long int: " << sizeof(long) << "\n";
cout << "The size of a short int: " << sizeof(short) << "\n";
cout << "The size of a float: " << sizeof(float) << "\n";
cout << "The size of a double: " << sizeof(double) << "\n";
cout << "The size of a long double: " << sizeof(long double) << "\n";
cout << "The size of a char: " << sizeof(char) << "\n";
cout << "The size of a bool: " << sizeof(bool) << "\n";

return 0;
}

Share this post


Link to post
Share on other sites
Kamikaze: Nope. Although a bool only stores true/false values, it uses a byte for storage. And a BOOL is only an MS typedef for unsigned char (or something similar, no reference near me now).

nobodynews: Testing the size of a char is superfluous, as sizeof returns the size of its argument in chars, i.e. sizeof(char) will always return 1 regardless of architecture.


The only things guaranteed about the sizes of built-in types are (from memory, don''t quote me on this):
A char is at least 1 byte, and is shorter than or equal to a short int is shorter than or equal to an int is shorter than or equal to a long int.


In the good old days whenever a type was required in a declaration the presence of an int was implicitly assumed whenever necessary, so most people didn''t write short int or long int, but merely short and long. This has been made a standard way of declaring the types short int and long int in both C and C++.


And for all those ugly all-uppercase types (BYTE, WORD, DWORD, BOOL, etc.), they are merely MS typedef for builtin types, with BOOL=unsigned char (possibly int actually, I don''t remember), WORD=unsigned short, DWORD=unsigned int on modern systems.


-Neophyte

Share this post


Link to post
Share on other sites
quote:
Original post by Kamikaze15
Shouldn''t a BOOL variable be 1 bit (I don''t mean byte) long ?

Kamikaze

Since a variable''s address is given in bytes, it''s impossible to address individual bits.

Share this post


Link to post
Share on other sites
quote:
Original post by Neophyte
Kamikaze: Nope. Although a bool only stores true/false values, it uses a byte for storage. And a BOOL is only an MS typedef for unsigned char (or something similar, no reference near me now).
Correct, a BOOL is a typedef, but a bool is a standard type. Its actual length, I think is implementation specific, and is only required to hold one of two possible values.


Share this post


Link to post
Share on other sites

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

Participate in the game development conversation and more when you create an account on GameDev.net!

Sign me up!