const 상수에 값을 변경 할 수 있습니다.

shint의 이미지

const int a = 10;

VC에서는 상수값 변경이 됩니다.

터보C 정복 책을 보면.

이 값을 바꿀 수 있었습니다.

방식을 까먹었네요. a = *(int*)20; 이런식으로 하면 되던데. 웹 컴파일러에서는 안되네요. ㅇ_ㅇ;;

pynoos의 이미지

웹컴파일러를 칭찬해야겠는걸요? C89 표준에서도 const 값은 못바꾸었을텐데 터보C가 구현상 허용했을 것 같고요. 웹 컴파일러는 어떤것인지는 모르겠지만 표준을 준수하여 구현되었나봅니다.

klara의 이미지

캐스팅하면 뭐든 되죠. *(int*)&a = 20 이겠죠.
참고로 C++이면 const_cast(a) = 20 이라고 해도 되는데 주어진 구문에서 const int는 컴파일타임 상수라서 C++에서는 전부 상수로 치환되기 때문에 a값 찍어봐도 안바뀐걸로 나올겁니다.
별개 변수로 받아서 해야되죠.

익명 사용자의 이미지

undefined behavior...

딱히 의미있는 테크닉이 아닙니다.