casting ×6
Создан 03.01.2025
5
голоса
5
ответов
13
просмотров
Безопасное приведение long к int в Java

Какой самый идиоматичный способ в Java проверить, что преобразование из long в int не приведет к потере информации?

Вот моя текущая реализация:

public static int safeLongToInt(long l) { int i = (int)l; if ((long)i != l) { throw new IllegalArgumentException(l + " не может быть...

6
голоса
4
ответов
29
просмотров
Когда следует использовать reinterpret_cast?

Я немного запутался в применении reinterpret_cast и static_cast. Из того, что я прочитал, общие правила таковы: следует использовать static_cast, когда типы могут быть интерпретированы на этапе компиляции, поэтому и слово static. Это именно тот каст, который компилятор C++ использует...

9
голоса
5
ответов
24
просмотров
Как преобразовать строку в число в PHP?

Я хочу преобразовать такие значения, как '3', '2.34', '0.234343' и т.д. в числовой формат. В JavaScript для этого можно использовать Number(), но есть ли аналогичный метод в PHP?

Входные данные Выходные данные '2' 2 '2.34' 2.34 '0.3454545' 0.3454545

8
голоса
5
ответов
27
просмотров
Почему стоит использовать static_cast<T>(x) вместо (T)x?

Я слышал, что функцию static_cast следует предпочитать кастингу в стиле C или простому вызову функции для приведения типов. Это правда? Почему?

20
голоса
0
ответов
59
просмотров
Сравнение регулярного приведения типов, static_cast и dynamic_cast

Суть проблемы:

Я пишу на C и C++ почти двадцать лет, но есть один аспект этих языков, который я никогда не понимал. Я, конечно, использовал обычные преобразования (касты), например:

MyClass *m = (MyClass *)ptr;

Но есть еще два типа приведения типов, и я не знаю, чем они...

38
голоса
4
ответов
30
просмотров
Почему операторы присваивания сCompound типа в Java (+=, -=, *=, /=) не требуют приведения типов?

Описание проблемы:

Я всегда считал, что следующий код:

i += j;

является просто короткой записью для:

i = i + j;

Однако, если мы попробуем следующий код:

int i = 5;
long j = 8;

то выражение i = i + j; не компилируется, в то время как i += j;...