Sabemos que sizeof
é um operador usado para calcular o tamanho de qualquer tipo de dado e expressão, e quando o operando é uma expressão, os parênteses podem ser omitidos.
int main()
{
int a;
sizeof int;
sizeof( int );
sizeof a;
sizeof( a );
return 0;
}
o primeiro uso de sizeof
está errado, enquanto outros estão certos.
Quando ele é compilado usando gcc, a seguinte mensagem de erro será fornecida:
main.c:5:9: error: expected expression before ‘int’
Minha dúvida é por que o padrão C não permite esse tipo de operação. Vai sizeof int
causar alguma ambigüidade?
sizeof +(int)a
tem a vantagem *&
de realmente compilar ;-)
+
. Por exemplo, sizeof +(char)a == sizeof(int)
devido à promoção de inteiros, é provavelmente menos sujeito a erros apenas colocar entre parênteses se houver alguma preocupação sobre a expressão da qual você está tentando calcular o tamanho. Então, eu não tenho certeza se chegaria a chamá-lo de "um uso", embora admita que o usei ...
sizeof (int)a
.