gcc: Long Long

1 
1 6.9 Double-Word Integers
1 ========================
1 
1 ISO C99 supports data types for integers that are at least 64 bits wide,
1 and as an extension GCC supports them in C90 mode and in C++.  Simply
1 write 'long long int' for a signed integer, or 'unsigned long long int'
1 for an unsigned integer.  To make an integer constant of type 'long long
1 int', add the suffix 'LL' to the integer.  To make an integer constant
1 of type 'unsigned long long int', add the suffix 'ULL' to the integer.
1 
1  You can use these types in arithmetic like any other integer types.
1 Addition, subtraction, and bitwise boolean operations on these types are
1 open-coded on all types of machines.  Multiplication is open-coded if
1 the machine supports a fullword-to-doubleword widening multiply
1 instruction.  Division and shifts are open-coded only on machines that
1 provide special support.  The operations that are not open-coded use
1 special library routines that come with GCC.
1 
1  There may be pitfalls when you use 'long long' types for function
1 arguments without function prototypes.  If a function expects type 'int'
1 for its argument, and you pass a value of type 'long long int',
1 confusion results because the caller and the subroutine disagree about
1 the number of bytes for the argument.  Likewise, if the function expects
1 'long long int' and you pass 'int'.  The best way to avoid such problems
1 is to use prototypes.
1