27-07-2022, 07:13 PM
Could someone please explain why the "if (u && (boolean1 <= boolean2));" in Rule A5-0-2 is non-compliant.
Welcome to the new MISRA discussion forum, if you were previously a member of our forums you may need to reset your password.
Why example in Rule A5-0-2 is non-complient
|
27-07-2022, 07:13 PM
Could someone please explain why the "if (u && (boolean1 <= boolean2));" in Rule A5-0-2 is non-compliant.
05-08-2022, 11:37 AM
The example above the line you quote, "if (u8)", is non-compliant because u8 is not of type bool. The rationale is that it is unclear whether the programmer recognises that (u8) is equivalent to (u8 != 0) or whether some other condition has been omitted.
The example you quote is there to illustrate that 'u8' doesn't become an acceptable Boolean value when incorporated into a more complex expression. It is arguable that the condition isn’t non-compliant with A5-0-2, as the type of the logical && expression is bool. However, It is non-compliant with M5-3-1 “Each operand of the ! operator, the logical && or logical || operators shall have the type bool”. The comment ought to say ‘compliant with this rule, but non-compliant with M5-3-1’.
Posted by and on behalf of
the MISRA C++ Working Group |
« Next Oldest | Next Newest »
|