Как уже говорили другие, компилятор отслеживает const
так же, как компилятор отслеживает тот факт, что переменная является int
.На самом деле, я читал, что, по крайней мере, gcc считает const int
отличным от int
типом, поэтому он даже не отслеживается как модификатор, он отслеживается точно так же, как int
.
Обратите внимание, что вы на самом деле можете изменить значение const
с помощью приведения указателя, но результат не определен:
#include <stdio.h>
#include <stdlib.h>
int main(void) {
const int c = 0;
printf("%d\n", c);
++*(int*)&c;
printf("%d\n", c);
}
На моей машине, использующей gcc, это печатает
0
1
Но компиляция с g ++ дает
0
0