Значение первого класса может быть
- передано как аргумент
- возвращается из подпрограммы
- назначенный в переменную.
Значение второго класса просто может быть передано как аргумент.
Значение третьего класса даже не может быть передано в качестве аргумента.
Почему эти вещи должны быть такими? Насколько я понимаю, "может передаваться как аргумент" означает, что он может быть перенесен в стек времени выполнения, "может быть назначен в переменную" означает, что он может быть перемещен в другое место памяти; "может быть возвращено из подпрограммы" почти такое же значение ", которое может быть назначено в переменную", поскольку возвращаемое значение всегда помещается в известный адрес, поэтому значение первого класса полностью "подвижное" или "динамическое", второго класса значение равно половине "подвижного", а значение третьего класса - просто "статическое", например, метки в C/С++, которые могут быть решены только с помощью инструкции goto, и вы не можете ничего с этим адресом, кроме "goto". понимание имеет смысл? или что означают эти три вида значений?