Incorrect Results From Logical or Conditional Operation With Side-Effects - Incorrect Results From Logical or Conditional Operation With Side-Effects
Description The C2H Compiler always evaluates both operands of logical ( && , || ) and conditional ( ?: ) operators. This is different from expected American National Standards Institute (ANSI) C behavior, where operands are evaluated left-to-right, and unnecessary operands are skipped. For example, in the expression (i-- && j--) , if the value of i is zero, ANSI C does not evaluate the right-hand-side (RHS) expression, and j is not decremented. By contrast, the C2H Compiler evaluates both sides, decrementing j . The following expressions are other examples that might be affected by this issue: if (i-- || j ) ...; a = ((cond == 1)? i : j ); Resolution Use logical and conditional operations whose operators have no side effects. Operations with side effects include pre- and post- increment and decrement operations ( , -- ), memory operations ( * , [] , ., -> ), and function calls.
Custom Fields values:
['novalue']
Troubleshooting
novalue
True
['novalue']
['FPGA Dev Tools Quartus II Software']
novalue
10.0
['Programmable Logic Devices']
['novalue']
['novalue']
['novalue'] - 2021-08-25
external_document