MISRA Discussion Forums

Full Version: Initialisation of arrays of floats
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Rule 9.3 in MISRA C:2012 has an exception which states "An initializer of the form { 0 } may be used to explicitly initialize all elements of an array object or subobject". This means that something of the form is acceptable:

Code:
uint32_t x[3] = { 0 };

When using floating point types is it also acceptable to use something of the form:

Code:
typedef double float64_t;
float64_t array_a[10] = { 0.0 };

-Andy.
{ 0 } is a MISRA-C 2012 exception, which permits the initialization of the elements of any array to zero.
Initialisating an array of double with { 0.0 } is non-compliant, unless the array has only one element.
Code:
float64_t array_a[10] = { 0.0 };                     // non-compliant
float64_t array_a[10] = { 0 };                       // compliant
float64_t array_a[10] = { 0.0, 0.0, 0.0, 0.0, 0.0,
                          0.0, 0.0, 0.0, 0.0, 0.0};  // compliant