В C, как многие из вас знают, все локальные переменные находятся в стеке. Стек, являющийся структурой данных «первым пришел последним», означает, что вы можете получить доступ только к тому, что было помещено в него последним. Итак, учитывая следующий код:
int k = 5;
int j = 3;
short int i;
if (k > j) i = 1;
Очевидно, что это бесполезный код, который не имеет реального значения, но я пытаюсь что-то понять.
Для короткого объявления int i я предполагаю, что в стеке выделяется 2 байта. Для int k и int j для обоих 4 байта выделяются значения 5 и 3. Таким образом, стек будет выглядеть следующим образом
---------- <- stack pointer
int i
----------
int k = 5
----------
int j = 3
----------
поэтому для оператора if вам нужно будет вставить int i, чтобы перейти к условиям k и j, и если да, то куда идет int i? Все это кажется очень трудоемким и утомительным, если C использует локальные переменные именно так.
Так это на самом деле то, как это делает C, или я все испортил?