Определение int64 t
Я новичок в C / C++, поэтому у меня есть несколько вопросов о базовом типе:
а) можете ли вы объяснить мне разницу между int64_t
и long
(long int
)?
В моем понимании, оба являются 64-битными целыми числами. Есть ли какая-то причина, чтобы выбрать один из них?
b) я попытался найти определение int64_t
в интернете, без особого успеха. Есть ли авторитетный источник, с которым мне нужно проконсультироваться по таким вопросам?
c) для кода с помощью int64_t
to скомпилировать, я в настоящее время, в том числе <iostream>
, что не имеет большого смысла для меня. Есть ли другие включает в себя, которые обеспечивают объявление int64_t
?
4 ответа:
а) можете ли вы объяснить мне разницу между
int64_t
иlong
(long int
)? В моем понимании, оба являются 64-битными целыми числами. Есть ли какая-то причина, чтобы выбрать один из них?первый является целочисленным типом со знаком ровно 64 бит. Последний является целочисленным типом со знаком по крайней мере 32 бита.
b) я попытался найти определение
int64_t
в интернете, без особого успеха. Есть ли авторитетный источник, с которым мне нужно проконсультироваться по таким вопросам?http://cppreference.com охватывает это здесь:http://en.cppreference.com/w/cpp/types/integer. однако авторитетным источником является стандарт C++ (этот конкретный бит можно найти в §18.4 целочисленных типов [cstdint]).
c) для кода с использованием
int64_t
для компиляции, я в том числе<iostream>
, что не имеет смысла мне. Есть ли другие включает в себя, которые обеспечивают объявлениеint64_t
?он объявлен в
<cstdint>
или<cinttypes>
(в пространстве именstd
), или<stdint.h>
или<inttypes.h>
(в глобальном пространстве имен).
int64_t
гарантируется стандартом C99 быть ровно 64 бит в ширину на платформах, которые его реализуют, нет такой гарантии дляlong
который составляет не менее 32 бит, так что это может быть больше.§7.18.1.3 целочисленные типы точной ширины 1 имя typedef intN_t обозначает целочисленный тип со знаком шириной N, без битов заполнения и представление дополнения two. Таким образом, int8_t обозначает знак целочисленный тип с шириной ровно 8 биты.