long long in C/C++
c++, long-integer, types
Solution
The letters 100000000000 make up a literal integer constant, but the value is too large for the type `int`. You need to use a suffix to change the type of the literal, i.e.
long long num3 = 100000000000LL;
The suffix `LL` makes the literal into type `long long`. C is not "smart" enough to conclude this from the type on the left, the type is a property of the literal itself, not the context in which it is being used.
Problem
I am trying this code on GNU's C++ compiler and am unable to understand its behaviour: ``` #include <stdio.h>; int main() { int num1 = 1000000000; long num2 = 1000000000; long long num3; //num3 = 100000000000; long long num4 = ~0; printf("%u %u %u", sizeof(num1), sizeof(num2), sizeof(num3)); printf("%d %ld %lld %llu", num1, num2, num3, num4); return 0; } ``` When I uncomment the commented line, the code doesn't compile and is giving an error: error: integer constant is too large for long type But, if the code is compiled as it is and is executed, it produces values much larger than 10000000000. Why?