Возможно ли memcpy от двойного массива до массива float безопасно?C++ memcpy от двойного массива до массива float
ответ
Зависит от того, что вы хотите. Значения, безусловно, не будут сохранены. Если вам это нужно, используйте std::copy
.
#include <algorithm>
int main()
{
double a[] = {1.618, 3.1416, 2.7, 0.707, 1.0};
float b[5];
std::copy(a, a + 5, b);
}
No.
Комментарии должны быть длиной не менее 15 символов, но это не подходит для ответов? Strange :) – fredoverflow
Ответы должны быть не менее 15 символов, тоже :) –
@ Даниэль Даранас: Ха-ха! Просто видел, как ваш уродливый хак «преодолел» ограничение. Умный;) – ereOn
Проблема заключается в том, что нет никакой гарантии, что бинарное представление компилятора из double
является эквивалентом представление float
. Для использования memcpy
для многобайтовых типов заключается в том, что основное представление должно быть одинаковым (тот же макет). Вы можете смело скопировать float
в float
, int
- int
и double
- double
.
Вы обречены на неопределенное поведение когда тип источника не соответствует типу назначения, такие как копирование с long
в char
или float
к double
. Функция memcpy
не делает никаких преобразований и не выполняет никаких рекламных акций. Он просто копирует.
В общем случае - нет.
В определенных случаях на данной платформе представление float
и double
может быть одинаковым, и копия будет успешной. Но в любом случае это не имеет никакого практического смысла.
- 1. От ByteBuffer до двойного массива
- 2. Использование memcpy от C++ до C#
- 3. усечение от двойного до плавать?
- 4. Передача массива символов от ObjC до C
- 5. От массива до массива до диапазона
- 6. Является ли memcpy массива в C Vaxocentrist?
- 7. memcpy для многомерного массива
- 8. memcpy трехмерного массива
- 9. Маршаллинг массива структур от C++ до C#?
- 10. C# Передача двойного массива методу перегрузки конструктора
- 11. аварии во время intializiation двойного массива до нуля в C++
- 12. Вызов функции двойного массива
- 13. Отделяя строку от двойного массива с разделителями
- 14. От смешивания массива до массива (смены)
- 15. Сокращение массива OpenCL Float до одного bool
- 16. Преобразование байтового массива от c до swift
- 17. От многомерного массива VBA до C++
- 18. C-programming: от строки до массива
- 19. организация массива от наименьшего до наибольшего C++
- 20. Передача массива String от Java до C++
- 21. Указатель массива от C до D
- 22. прохождение 2d массива от C до fortran77
- 23. Передача байтового массива от C до Lua
- 24. Marshaling массив структур, содержащих поля массива от C++ до C#
- 25. Сохранение двойного массива в текстовый файл C#
- 26. Два массива двойного типа в один, C#
- 27. Как округлить значение float до двойного значения?
- 28. Преобразование двойного массива двойного массив List
- 29. От float до mpz_t
- 30. Печать двойного массива путем петли
Зависит от того, что вы подразумеваете под безопасным. –