"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > lvalue-to-rvalue 변환으로 인한`int x = x;`정의되지 않은 동작입니까?

lvalue-to-rvalue 변환으로 인한`int x = x;`정의되지 않은 동작입니까?

2025-03-22에 게시되었습니다
검색:687

Is `int x = x;` Undefined Behavior Due to Lvalue-to-Rvalue Conversion?

int x = x; 표준 (3.3.2)은 int x = x; 예제에서와 같이 변수를 자체로 초기화하면 예상치 못한 결과를 초래할 수 있다고 선언합니다. 오른쪽 X가 결정되지 않은 자동 변수라고 가정 해 봅시다. 표준 (4.1)에 따르면, 그러한 값에 대한 LValue-to-RValue 변환을 수행하면 정의되지 않은 동작이 발생합니다.

1 차 의도는 예상되는 다양한 의도를 제안합니다. 예를 들어, 표준은 내장 할당 연산자가 올바른 피연산자에 대한 lvalue-to-rvalue 변환을 수반한다는 것을 나타냅니다. Other provisions also indicate that lvalue-to-rvalue conversion is generally anticipated except when explicitly specified otherwise.

Extending the Conjecture to Initializers

While initialization is distinct from assignment, the standard's ambiguity regarding value categories could potentially extend to this area. 증거는 의도 된 사양이 값이 필요한 곳이면 사전을 기대하는 것임을 시사합니다.

int x = x; 동작.

증거를 지원하는

다른 유형과 다른 할당을 가진 비 초기 변수를 할당하는 코드의 고려에서 추가 증거가 발생합니다. 참조 초기화에서 lvalue-to-rvalue 변환을 방지하지만 객체 초기화에이를 허용하는 것과 같은 일관되지 않은 행동은 LValue-to-RValue 변환이 사본 인 소설질 화를 위해 예상되는 견해를 추가합니다. lvalue-to-rvalue 변환 중. 이것은 int x = x;. 이것은 결국 오른쪽 X의 초기화되지 않은 특성으로 인해 정의되지 않은 행동으로 이어집니다. 표준의 불일치와 설명 필요성은 가치 범주에 대한 자세한 사양의 중요성을 강조합니다. Is `int x = x;` Undefined Behavior Due to Lvalue-to-Rvalue Conversion?

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3