Posts: 1
Threads: 1
Joined: Jan 2022
Reputation:
0
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 ) {/* */}
Posts: 632
Threads: 18
Joined: Jan 2006
Reputation:
1
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.
Posted by and on behalf of the MISRA C Working Group