문제
다음 코드가 UB를 호출합니까?
int main(){
volatile int i = 0;
volatile int* p = &i;
int j = ++i * *p;
}
해결책
그래 그거야 정의되지 않은 행동 두 번째 규칙을 위반하려고하기 때문에 ..
표준은 다음을 나타냅니다
1) 이전과 다음 시퀀스 지점 사이에서 객체는 표현의 평가에 의해 최대 한 번에 저장된 값을 수정해야한다.
2) 또한 저장할 값을 결정하기 위해서만 이전 값에 액세스해야합니다..
메모: 오페라의 평가 순서 *
운영자입니다 지정되지 않았습니다 그리고 *p
아무것도 아닙니다 i
.
다른 팁
예 - ++ i 또는 *p (i)를 먼저 평가할 수 있습니다.
제휴하지 않습니다 StackOverflow