Sabemos que sizeof
es un operador que se usa para calcular el tamaño de cualquier tipo de datos y expresión, y cuando el operando es una expresión, se pueden omitir los paréntesis.
int main()
{
int a;
sizeof int;
sizeof( int );
sizeof a;
sizeof( a );
return 0;
}
el primer uso de sizeof
es incorrecto, mientras que otros son correctos.
Cuando se compila usando gcc, aparecerá el siguiente mensaje de error:
main.c:5:9: error: expected expression before ‘int’
Mi pregunta es por qué el estándar C no permite este tipo de operación. ¿Causará sizeof int
alguna ambigüedad?
sizeof +(int)a
tiene la ventaja *&
de compilar realmente ;-)
+
. Por ejemplo, sizeof +(char)a == sizeof(int)
debido a la promoción de números enteros, es probable que sea menos propenso a errores solo poner entre paréntesis si hay alguna preocupación acerca de la expresión de la que está tratando de tomar el tamaño. Así que no estoy seguro de ir tan lejos como para llamarlo "un uso", aunque admito que lo usé ...
sizeof (int)a
.