MISRA Discussion Forums

Full Version: Rule 13.4 For statement operand assignment
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
The third operand of the for statement has an assignment. Does the calculation violate the result that the assignment operator should not be used?

for ( pos = (&dev->list)->next, q = pos->next; pos != (&dev->list); pos = q, q = pos->next ) {/*        */}
The code does not violate rule 13.4 "The result of an assignment operator should not be used".

Examples of 13.4 violations would be 


Code:
x = pos = q; 
if ( pos = q );

However, the code does violate:

Rule 12.3  "The comma operator should not be used" which includes the 1st and 3rd clauses of a for loop

Rule 14.2  "A for loop shall be well-formed". This requires the use of a single loop counter with a scalar type.