컴파일러가 프로그램의 시간 복잡성을 저하시키는 것이 합법입니까?이것이 관찰 가능한 행동으로 간주됩니까? (참고: 이 질문은 언어 변호사의 질문입니다. 기존의 특정 컴파일러를 지칭하는 것이 아닙니다.) 컴파일러가 프로그램의 시간 복잡성을 저하시킬 수 있는 경우는 언제입니까? 어떤 상황(있는 경우)에서 이것이 "관찰 가능한 행동"으로 간주되며, 그 이유는 무엇입니까? (예를 들어, 컴파일러는 다항식 시간 프로그램을 지수 시간 프로그램으로 합법적으로 "줄일" 수 있습니까?) 답이 C와 C++, 또는 두 가지 버전이 다르면 차이점을 설명해주세요.C 표준은 실제로 원시 연산이나 라이브러리 함수에 대한 시간 복잡도 모델을 가지고 있지 않으므로 컴파일러는 프로그램 의미론(관찰 가능한 동작)을 보존하는 거의 모든 작업..