const int a = 10;
VC에서는 상수값 변경이 됩니다.
터보C 정복 책을 보면.
이 값을 바꿀 수 있었습니다.
방식을 까먹었네요. a = *(int*)20; 이런식으로 하면 되던데. 웹 컴파일러에서는 안되네요. ㅇ_ㅇ;;
웹컴파일러를 칭찬해야겠는걸요? C89 표준에서도 const 값은 못바꾸었을텐데 터보C가 구현상 허용했을 것 같고요. 웹 컴파일러는 어떤것인지는 모르겠지만 표준을 준수하여 구현되었나봅니다.
---http://coolengineer.com
캐스팅하면 뭐든 되죠. *(int*)&a = 20 이겠죠. 참고로 C++이면 const_cast(a) = 20 이라고 해도 되는데 주어진 구문에서 const int는 컴파일타임 상수라서 C++에서는 전부 상수로 치환되기 때문에 a값 찍어봐도 안바뀐걸로 나올겁니다. 별개 변수로 받아서 해야되죠.
undefined behavior...
딱히 의미있는 테크닉이 아닙니다.
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
웹컴파일러를 칭찬해야겠는걸요? C89 표준에서도
웹컴파일러를 칭찬해야겠는걸요? C89 표준에서도 const 값은 못바꾸었을텐데 터보C가 구현상 허용했을 것 같고요. 웹 컴파일러는 어떤것인지는 모르겠지만 표준을 준수하여 구현되었나봅니다.
---
http://coolengineer.com
캐스팅하면 뭐든 되죠. *(int*)&a = 20
캐스팅하면 뭐든 되죠. *(int*)&a = 20 이겠죠.
참고로 C++이면 const_cast(a) = 20 이라고 해도 되는데 주어진 구문에서 const int는 컴파일타임 상수라서 C++에서는 전부 상수로 치환되기 때문에 a값 찍어봐도 안바뀐걸로 나올겁니다.
별개 변수로 받아서 해야되죠.
undefined behavior... 딱히
undefined behavior...
딱히 의미있는 테크닉이 아닙니다.
댓글 달기