sizeof
работает с типами и выражениями . Когда вы применяете его к типу, ()
являются частью синтаксиса sizeof
: sizeof(type)
. Когда вы применяете его к выражению ()
не являются частью синтаксиса sizeof
: sizeof expression
.
То есть ваш второй sizeof
на самом деле «не применяется к переменной». Применяется к выражению (f)
. Это выражение состоит из одной переменной f
, заключенной в избыточную пару ()
. Вы также можете обойтись без этой избыточной пары ()
и использовать просто sizeof f
.
Когда sizeof
применяется к выражению, оно возвращает размер результата выражения (т. Е. Размер типа, который имеет выражение). В вашем примере оба приложения sizeof
гарантированно оценивают одно и то же значение.
На самом деле, хорошая практика программирования - избегать sizeof(type)
в максимально возможной степени, то есть предпочитать использовать sizeof expression
. Это делает ваш код более независимым от типа, что всегда хорошо. Имена типов принадлежат декларациям и больше нигде.