#include <stdio.h>

int main( ) {
   int a = 2000000000;
   int b = a * 2;          // error: 4000000000 es demasiado grande para guardarse en un int
   printf("%d\n", b);      // imprimirá un valor raro

   long long c = 2000000000;
   long long d = c * 2;    // ok: long long es un entero con mayor rango (y los cálculos que involucren long long se harán con long long)
   printf("%lld\n", d);    // %lld para long long; imprimirá 4000000000

   int e = 2000000000;
   long long f = e * 2;    // mal: int * int es int y el resultado se calcula mal, sin importar que se quiera guardar en long long (se calcula mal antes de guardarlo)
   printf("%lld\n", f);    // imprimirá un valor raro

   int g = 2000000000;
   long long h = g * 2LL;  // ok: 2LL se considera long long y entonces el cálculo se hará en long long
   printf("%lld\n", h);    // %lld para long long; imprimirá 4000000000
}
