74 votes

Pourquoi dois-je utiliser des parenthèses après sizeof?

La compilation ci-dessous ne compile pas:

 typedef int arr[10];
int main(void) {
    return sizeof arr;
}

sizeof.c:3: error: expected expression before ‘arr'
 

mais si je le change en

 sizeof(arr);
 

tout va bien. Pourquoi?

111voto

Ise Wisteria Points 5852

Selon 6.5.3, il existe deux formes pour sizeof comme suit:

 sizeof unary-expression
sizeof ( type-name )
 

Puisque arr dans votre code est un type-name , il doit être mis entre parenthèses.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X