Definition of int64_t

c, c++, integer, long-integer

Solution

a) Can you explain to me the difference between `int64_t` and `long` (`long int`)? In my understanding, both are 64 bit integers. Is there any reason to choose one over the other?

The former is a signed integer type with exactly 64 bits. The latter is a signed integer type with at least 32 bits.

b) I tried to look up the definition of `int64_t` on the web, without much success. Is there an authoritative source I need to consult for such questions?

http://cppreference.com covers this here: http://en.cppreference.com/w/cpp/types/integer. The authoritative source, however, is the C++ standard (this particular bit can be found in §18.4 Integer types [cstdint]).

c) For code using `int64_t` to compile, I am including `<iostream>`, which doesn't make much sense to me. Are there other includes that provide a declaration of `int64_t`?

It is declared in `<cstdint>` or `<cinttypes>` (under namespace `std`), or in `<stdint.h>` or `<inttypes.h>` (in the global namespace).

Problem

I am new to C/C++, so I have a couple of questions about a basic type: a) Can you explain to me the difference between `int64_t` and `long` (`long int`)? In my understanding, both are 64 bit integers. Is there any reason to choose one over the other? b) I tried to look up the definition of `int64_t` on the web, without much success. Is there an authoritative source I need to consult for such questions? c) For code using `int64_t` to compile, I am currently including `<iostream>`, which doesn't make much sense to me. Are there other includes that provide a declaration of `int64_t`?

Original source

Related problems