12 votes

long long est de 8 octets, mais j'obtiens un dépassement d'entier ?

Supposons que

  long long b = 5*1024*1024*1024; // 5 gigs, small enough for 64 bits
  printf ("%lu\n",sizeof(long long)); // prints 8 (bytes) = 64 bits

mais le compilateur se plaint :

  warning: integer overflow in expression [-Woverflow]

Pourquoi ça déborde, qu'est-ce que je rate ?

20voto

teppic Points 4715

Parce que les nombres sur le côté droit sont de type int pas long long donc int l'arithmétique est effectuée dans l'expression, ce qui entraîne un débordement.

Si vous ajoutez LL à l'un d'entre eux, ça va les promouvoir tous.

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