Practical C Programming, 3rd Edition (2011)
Part IV. Other Language Features
Appendix B. Ranges and Parameter Passing Conversions
Ranges
Table B-1 and Table B-2 list the ranges of various variable types.
Table B-1. 32-Bit UNIX Machine
Name |
Bits |
Low value |
High value |
Accuracy |
int |
32 |
-2147483648 |
2147483647 |
|
short int |
16 |
-32768 |
32767 |
|
long int |
32 |
-2147483648 |
2147483647 |
|
unsigned int |
32 |
0 |
4294967295 |
|
unsigned short int |
16 |
0 |
65535 |
|
unsigned long int |
32 |
0 |
4294967295 |
|
char |
8 |
System Dependent |
||
unsigned char |
8 |
0 |
255 |
|
float |
32 |
-3.4E+38 |
3.4E+38 |
6 digits |
double |
64 |
-1.7E+308 |
1.7E+308 |
15 digits |
long double |
64 |
-1.7E+308 |
1.7E+308 |
15 digits |
Table B-2. Turbo C++, Borland C++, and Most Other 16-bit Systems
Name |
Bits |
Low value |
High value |
Accuracy |
int |
16 |
-32768 |
32767 |
|
short int |
16 |
-32768 |
32767 |
|
long int |
32 |
-2147483648 |
2147483647 |
|
unsigned int |
16 |
0 |
65535 |
|
unsigned short int |
16 |
0 |
65535 |
|
unsigned long int |
32 |
0 |
4294967295 |
|
char |
8 |
-128 |
127 |
|
unsigned char |
8 |
0 |
255 |
|
float |
32 |
-3.4E+38 |
3.4E+38 |
6 digits |
double |
64 |
-1.7E+308 |
1.7E+308 |
15 digits |
long double |
80 |
-3.4E+4932 |
3.4E+4932 |
17 digits |
Automatic Type Conversions to Use When Passing Parameters
In order to eliminate some of the problems that may occur when passing parameters to a function, C performs the following automatic conversions to function arguments as shown in Table B-3.
Table B-3. Automatic Conversions
Type |
Converted to |
char |
int |
short int |
int |
int |
int |
long int |
long int |
float |
double |
double |
double |
long double |
long double |
array |
pointer |