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