GNU Info

Info Node: (gcc-295.info)Long Long

(gcc-295.info)Long Long


Next: Complex Prev: Conditionals Up: C Extensions
Enter node , (file) or (file)node

Double-Word Integers
====================

   GNU C supports data types for integers that are twice as long as
`int'.  Simply write `long long int' for a signed integer, or `unsigned
long long int' for an unsigned integer.  To make an integer constant of
type `long long int', add the suffix `LL' to the integer.  To make an
integer constant of type `unsigned long long int', add the suffix `ULL'
to the integer.

   You can use these types in arithmetic like any other integer types.
Addition, subtraction, and bitwise boolean operations on these types
are open-coded on all types of machines.  Multiplication is open-coded
if the machine supports fullword-to-doubleword a widening multiply
instruction.  Division and shifts are open-coded only on machines that
provide special support.  The operations that are not open-coded use
special library routines that come with GNU CC.

   There may be pitfalls when you use `long long' types for function
arguments, unless you declare function prototypes.  If a function
expects type `int' for its argument, and you pass a value of type `long
long int', confusion will result because the caller and the subroutine
will disagree about the number of bytes for the argument.  Likewise, if
the function expects `long long int' and you pass `int'.  The best way
to avoid such problems is to use prototypes.


automatically generated by info2www version 1.2.2.9