정의되지 않은 동작이 변수에 대한 두 가지 다른 값을 설명하는 방법
역설적으로 보일 수도 있지만 동일한 주소에 있는 변수가 가능합니다. 두 개의 서로 다른 값을 생성합니다. 이 현상은 정의되지 않은 동작으로 인해 발생할 수 있습니다.
제공된 코드 조각에는 상수 정수(a1)가 정의되어 있으며 상수 포인터(b1)에 해당 주소가 할당되어 있습니다. 이어서 char 포인터(c1)가 b1에서 캐스팅됩니다. c1을 수정하면 상수로 선언되었음에도 불구하고 a1의 값이 효과적으로 변경됩니다. c1을 다시 정수 포인터(t)로 캐스팅하면 이 변경된 값이 드러납니다.
이러한 작업은 정의되지 않은 동작을 구성합니다. const 변수를 수정하려는 시도는 C 표준을 위반하기 때문입니다. 섹션 7.1.6.1에 명시된 대로 이러한 행동은 관찰된 것과 같이 불가능해 보이는 결과를 포함하여 예측할 수 없는 결과를 초래할 수 있습니다.
표준에서는 이러한 행동에 대해 명확하게 경고합니다.
따라서 관찰된 동작은 이상하게 보일 수도 있지만 이는 컴파일러 최적화가 아니라 상수 변수를 수정하려는 시도로 인해 발생하는 정의되지 않은 동작의 증상입니다.
위 내용은 C의 Const 변수는 어떻게 두 개의 다른 값을 가질 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!