Problema crítico
O compilador C2H sempre avalia ambos os operands de lógica
(&&, ||) e condicional (?:)
Operadores. Isso é diferente dos padrões nacionais americanos esperados
Comportamento do Instituto (ANSI) C, em que os operands são avaliados da esquerda para a direita,
e os operands desnecessários são ignorados.
Por exemplo, na expressão (i-- && j--),
se o valor for i zero, a ANSI C não avaliará
a expressão do lado direito (RHS) e j não é
Diminuída. Em contraste, o compilador C2H avalia ambos os lados,
decrementação j.
As seguintes expressões são outros exemplos que podem ser afetados por este problema:
if (i-- || j )
...;
a = ((cond == 1)? i : j );
Use operações lógicas e condicionais cujos operadores têm
sem efeitos colaterais. Operações com efeitos colaterais incluem pré e pós-
operações de incremento e decremento ( , ), --
operações de memória (*, []., ->),
e chamadas de função.