10.8 Violation understanding details

Moderators: misra-c, david ward

ashutosh.parate
Posts: 1
Joined: Fri Jan 04, 2019 10:41 am
Company: Larsen & Toubro

10.8 Violation understanding details

Postby ashutosh.parate » Thu Jan 17, 2019 3:18 pm

Dear All,

I have read MISRA guidelines and tried to implement in my source code, After running in static code analysis tool it give me 10.8 violation for the below expression saying

" The value of a composite expression shall not be cast to a different essential type category or a wider essential type."

u16 param_val_u16 = 0U;

param_val_u16 = (u16)(brk_itbv_p_brk_hsd_isense.Voltage_Filtered_u32 / 50U);

Can anyone please try to justify what exactly it meant to make it compliant even if I did the intent explicit type casting of u16 to achieve the destination.

Thanks in advance,

misra-c
Posts: 537
Joined: Thu Jan 05, 2006 1:11 pm

Re: 10.8 Violation understanding details

Postby misra-c » Thu Feb 14, 2019 12:29 pm

This response assumes that
* "brk_itbv_p_brk_hsd_isense.Voltage_Filtered_u32" has an unsigned type of 32 bits
* u16 is an unsigned type of 16 bits.

The //essential type// resulting from the "/" operation will be an unsigned type of 32 bits.
Casting an unsigned type of 32 bits to an unsigned type of 16 bits is not a violation of rule 10.8 as it is a cast to the same //essential type category// and is to a narrower type.
---
Posted by and on behalf of
the MISRA C Working Group


Return to “8.10 The essential type model”

Who is online

Users browsing this forum: No registered users and 1 guest