Можно создать дубликат:
Does the evil cast get trumped by the evil compiler?Какова цель определителя констант, если я могу изменить его с помощью указателя в C?
Здравствуйте,
Если я могу изменить константу через указатель, то какова цель этого? Ниже код:
#include <stdio.h>
#include <stdlib.h>
int main()
{
const int a = 10;
int *p = (int *)&a;
printf("Before: %d \n", a);
*p = 2;
/*a = 2; gives error*/
printf("After: %d \n", *p);
return 0;
}
ВЫВОД:
До: 10
После: 2
Нажмите любую клавишу для продолжения. , ,
с помощью Visual Studio 2008.
См. [Смеется ли злой бросок со злым компилятором?] (Http://stackoverflow.com/questions/712334/does-the-evil-cast-get-trumped-by-the-evil- компилятор). Это [неопределенное поведение] (http://www.catb.org/jargon/html/N/nasal-demons.html). – ephemient
Теперь скомпилируйте с оптимизацией. – GManNickG