Присвоить значение переменной - это отнять значение у переменной и забрать его себе.
Хорошо, тогда "Присвоить переменной новое значение". На случай вопросов - старое значение при этом теряется.
Это - профессиональный жаргон. Правильно - "Присвоить [себе] новое значение переменной".
В результате этой операции у переменной никакого значения не остается - оно принадлежит нам.
Невозможно. У переменной всегда есть какое-то значение.
У нее есть много потенциальных, виртуальных, в общем, возможных и доступных для присвоения окружающими значений.
Отличать надо, товарищ Ойра-Ойра, возможность от действительности, случайность от необходимости, теорию от практики и вообще…
Так что все логично - мы это значение имеем, мы его знаем, а переменная не знает, какое это значение.
Наоборот: значение переменной всегда можно опросить. При этом опрашивают не нас (мы это значение не знаем), а переменную, которой оно всегда известно.
Это если у нее есть в данный момент какое-то значение, никем не присвоенное.
Вообще-то, если у переменной есть значение, никем не присвоенное, она становится постоянной.
При запуске программы или включении устройства значения переменных определяются содержимым памяти, под них отведенной. Оно может быть случайным, но память может быть и обнулена, хотя это затратнее. Переменная может стать постоянной в единственном случае: если при ее описании добавлен спецификатор const и присвоено значение. Этот прием может ускорить работу.
А вот если в результате у переменной могут оказаться различные значения, то значит, у нее есть много никем не присвоенных значений.
А если есть значение (а не много значений) - какая же она переменная?
Есть примеры наоборот. Постоянная Хаббла. Ее значение зависит от времени, причем, не слишком тривиальным образом - н все называют ее постоянной. "Расчленили из РАЕН"
"Уволили из гестапо за жестокость".
На редкость неприятную историю вы рассказали нам, эр Colombo.