Nous savons que sizeof
c'est un opérateur utilisé pour calculer la taille de n'importe quel type de données et expression, et lorsque l'opérande est une expression, les parenthèses peuvent être omises.
int main()
{
int a;
sizeof int;
sizeof( int );
sizeof a;
sizeof( a );
return 0;
}
le premier usage de sizeof
est faux, tandis que d'autres ont raison.
Lorsqu'il est compilé à l'aide de gcc, le message d'erreur suivant s'affiche:
main.c:5:9: error: expected expression before ‘int’
Ma question est de savoir pourquoi la norme C ne permet pas ce type d'opération. Provoquera-t-il sizeof int
une ambiguïté?
sizeof +(int)a
a l'avantage *&
de compiler réellement ;-)
+
. Par exemple, en sizeof +(char)a == sizeof(int)
raison de la promotion d'entiers, il est probablement moins sujet aux erreurs de simplement mettre entre parenthèses s'il y a un problème avec l'expression dont vous essayez de prendre la taille. Je ne suis donc pas sûr que j'irais jusqu'à l'appeler "une utilisation", même si j'avoue l'avoir utilisé ...
sizeof (int)a
.