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

Get Practical C Programming, 3rd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.