Подтвердить что ты не робот

Конвертировать из long long в int и наоборот в С++

Как конвертировать из long long в int и наоборот в С++? также каковы свойства длинного длинного, особенно его максимального размера, спасибо заранее..

4b9b3361

Ответ 1

Тип long long обычно составляет 64 бита.

Тип int может быть 32 бита, но не на всех машинах.

Если вы наложили int на долгое время, вы можете сделать

my_long_long = (long long) my_int

и все будет хорошо. Если вы идете в другую сторону, например

my_int = (int) my_long_long

а int меньше, чем 64-битные, он не сможет хранить всю информацию, поэтому результат может быть неправильным.

Ответ 2

int гарантируется ширина не менее 16 бит. В современных системах это чаще всего 32 бита (даже в 64-битных системах).

long long, который первоначально не существовал в С++, гарантированно будет иметь ширину не менее 64 бит. Это почти всегда ровно 64 бита шириной.

Обычный способ преобразования значения из одного целочисленного типа в другой - это просто его назначение. Любое необходимое преобразование будет сделано неявно. Например:

int x = 42;
long long y = 9223372036854775807;
y = x; // implicitly converts from int to long long
x = y; // implicitly converts from long long to int

Для сужения преобразования, когда целевой тип не может представлять все значения типа источника, существует риск переполнения; int может или не может удерживать значение 9223372036854775807. В этом случае результат определяется реализацией. Наиболее вероятным поведением является то, что старшие разряды отбрасываются; например, преобразование 9223372036854775807 в int может привести к 2147483647. (Это яснее в шестнадцатеричном формате, значения 0x7fffffffffffffff и 0x7fffffff, соответственно.)

Если вам нужно явно преобразовать, вы можете использовать трансляцию. Сценарий в стиле C использует имя типа в круглых скобках:

(long long)x

Или вы можете использовать стиль С++ static_cast:

static_cast<long long>(x)

что несколько безопаснее, чем приведение в стиле C, потому что оно ограничено, в каких типах он может работать.

Ответ 3

Размер int составляет всего 2 байта, а другой - больше, чем int. Поэтому, если вы хотите преобразовать long в int, вы потеряете информацию. Но другой способ возможен, не жертвуя правильностью информации. Предположим, что a имеет длинный тип и b имеет тип int. Затем int to long covertion: a=(long)b;. Другим способом: b=(int)a;.