중요 문제
C2H 컴파일러는 항상 논리 피연산자를 모두 평가합니다.
(&&
, ||
) 및 조건부(?:
)
연산자. 이는 예상되는 미국 국가 표준과 다릅니다
피연산자가 왼쪽에서 오른쪽으로 평가되는 ANSI(Institute) C 동작
불필요한 피연산자는 건너뜁니다.
예를 들어, 표현식 (i-- && j--)
에서 ,
의 i
값이 0이면 ANSI C는
오른쪽(RHS) 표현식 j
이며
감소. 대조적으로, C2H 컴파일러는 양쪽을 평가합니다.
j
감소 .
다음 표현식은 다음과 같은 다른 예입니다. 이 문제의 영향을 받습니다.
if (i-- || j )
...;
a = ((cond == 1)? i : j );
연산자가 있는 논리 및 조건부 연산을 사용합니다.
부작용 없음. 부작용이 있는 작업에는 사전 및 사후 작업이 포함됩니다.
증가 및 감소 연산(
, --
),
메모리 연산 (*
, , ., ->
[]
),
및 함수 호출.