Когда в выражении используется целочисленное значение, тип которого имеет ранг ниже, чем int
(например, char
или short
), оно автоматически повышается до типа int
.
В случае выражения (b==a)?a:b
оба возможных значения повышаются до типа int
, поэтому выражение в целом имеет тип int
.Следовательно, оператор sizeof
оценивает размер int
, который на вашем компьютере равен 4.
Также обратите внимание, что выражение, переданное в sizeof
, равно , а не , оцененному вво время выполнения.Он только анализируется компилятором, чтобы определить его тип.Единственный раз, когда операнд sizeof
вычисляется во время выполнения, это если операнд является массивом переменной длины.