# Vault 7: Projects

This publication series is about specific projects related to the Vault 7 main publication.

### Protego

# MPLAB XC16 C-Compiler

- 1
- 2
…
- 229
- 230
- 231
- 232
- 233
…
- 365
- 366

Implementation-Defined Behavior
 2012-2013 Microchip Technology Inc. DS50002071C-page 231
A.7 FLOATING POINT
Implementation-Defined Behavior for Floating Point is covered in section G.3.6 of the
ANSI C Standard.
Is the scaled value of a floating constant that is in the range of the representable value
for its type, the nearest representable value, or the larger representable value immedi-
ately adjacent to the nearest representable value, or the smallest representable value
immediately adjacent to the nearest representable value? (ISO 6.1.3.1)
The nearest representable value.
The following table describes the amount of storage and range of various types of
floating point numbers: (ISO 6.1.2.5)
What is the direction of truncation, when an integral number is converted to a
floating-point number, that cannot exactly represent the original value? (ISO 6.2.1.3)
Down.
What is the direction of truncation, or rounding, when a floating-point number is
converted to a narrower floating-point number? (ISO 6.2.1.4)
Down.
A.8 ARRAYS AND POINTERS
Implementation-Defined Behavior for Arrays and Pointers is covered in section G.3.7
of the ANSI C Standard.
What is the type of the integer required to hold the maximum size of an array that is,
the type of the size of operator, size_t? (ISO 6.3.3.4, ISO 7.1.1)
unsigned int.
What is the size of integer required for a pointer to be converted to an integral type?
(ISO 6.3.4)
16 bits.
What is the result of casting a pointer to an integer, or vice versa? (ISO 6.3.4)
The mapping is the identity function.
What is the type of the integer required to hold the difference between two pointers to
members of the same array, ptrdiff_t? (ISO 6.3.6, ISO 7.1.1)
unsigned int.
TABLE A-3: FLOATING-POINT TYPES
Designation Size (bits) Range
float 32 1.175494e-38  3.40282346e+38
double* 32 1.175494e-38  3.40282346e+38
long double 64 2.22507385e-308  1.79769313e+308
* double is equivalent to long double if -fno-short-double is used.

- 1
- 2
…
- 229
- 230
- 231
- 232
- 233
…
- 365
- 366