Ranges and Parameter Passing Conversions - Other Language Features - Practical C Programming, 3rd Edition (2011)

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