double diff = static_cast<int64_t>(a- b);
a
и b
имеют тип int64_t
.
Я видел этот код в нашем проекте. Я думаю, что это подозрительно, но я действительно не уверен. Я знаком с static_cast
, и я бы не писал такой код.
Является ли этот static_cast действительным/законным? Это полезно?
Это действие действительно, но ничего не делает. Я согласен, что это подозрительно. Вы должны внимательно изучить, что должен делать код, и если он будет исправлен, вы можете захотеть переписать его так, чтобы намерение было более четким и чтобы оно не выглядело подозрительным.
Если a
и b
оба являются int64_t
, нет никакого смысла в int64_t
. Он int64_t
результат типа int64_t
для ввода int64_t
. Было бы так:
int a = 10, b = 5;
double c = (int)(a - b); // the cast is not needed, but also not "harmful"