for (i = 0; i <= N; ++i) { ... }
N이 INT_MAX
인 경우이 특정 명령문은 무한 반복을 유발합니다. 및 N
을 부호없는 것으로 가정하면 부호없는 오버플로가 오버 플로우를 감싸는 것으로 알려져 있으므로 컴파일러는 오버플로에서 i
이 정의되지 않은 경우 루프가 정확하게 N+1
번 반복 할 것으로 추정 할 수 있습니다. 여기서주의 할 점은 다음과 내가 같은 루프를 만들 경우,INT_MAX + 1 = INT_MIN은 부호있는 정수입니까?
for (i = 0; i < N; ++i) { ... }
이 여전히 behav을 정의되지 않습니다?
INT_MAX + 1
이 부호가있는 정수의 경우 반드시 INT_MIN
과 같지 않은 이유는 무엇입니까?
C에서 비트 오버플로가 정의되지 않은 동작이기 때문에 –