Ниже приведен размер типа, который имеет i++
, который равен int
(обычно int имеет 4 или 8 байтов, поэтому он, скорее всего, даст вам значение 4 или 8).Однако, поскольку выражение не оценивается, для выражения не выполняется никаких действий во время выполнения.
int i = 0;
sizeof(i++);
Оценка выражения в основном означает выполнение его побочных эффектов (например, увеличение переменной) или чтение значений из памяти или регистров во время выполнения.Таким образом, в некотором смысле sizeof
«выбрасывает» свой операнд, поскольку он не выполняет операцию времени выполнения, которую он указывает (значение i
все равно будет равно нулю).