Có thể ghi nhớ từ mảng kép vào mảng float một cách an toàn không?C++ memcpy từ mảng kép tới mảng float
Trả lời
Phụ thuộc vào những gì bạn muốn. Các giá trị chắc chắn sẽ không được bảo tồn. Nếu bạn cần, hãy sử dụng 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);
}
số
Nhận xét phải dài ít nhất 15 ký tự, nhưng điều này không chứa câu trả lời? Strange :) – fredoverflow
Các câu trả lời phải có ít nhất 15 ký tự, quá :) –
@ Darrian Daranna: Haha! Chỉ cần nhìn thấy hack xấu xí của bạn để "vượt qua" giới hạn. Thông minh;) – ereOn
Vấn đề là không có đảm bảo rằng biểu diễn nhị phân của trình biên dịch của một double
là đại diện tương đương với một float
. Để sử dụng memcpy
cho các loại nhiều byte là biểu diễn bên dưới phải giống nhau (cùng một bố cục). Bạn có thể sao chép an toàn float
tới float
, int
tới int
và double
đến double
.
Bạn đang dành cho hành vi undefined khi loại nguồn không phù hợp với loại đích, chẳng hạn như sao chép từ long
để char
hoặc float
để double
. Hàm memcpy
không thực hiện bất kỳ chuyển đổi nào hoặc thực hiện bất kỳ chương trình khuyến mãi nào. Nó chỉ là bản sao.
Trong trường hợp chung - không.
Trong trường hợp cụ thể, trên một nền tảng nhất định, đại diện của float
và double
có thể giống nhau và bản sao sẽ thành công. Nhưng nó không có ý nghĩa thiết thực nào.
- 1. trỏ tới mảng C++
- 2. truyền con trỏ kép C++ tới python
- 3. Mảng kép chuyển đổi thành mảng byte
- 4. Con trỏ tới mảng chuỗi trong C
- 5. C++ - mảng con trỏ tới Vector?
- 6. Lưu trữ một mảng float C trong một NSDictionary
- 7. Delphi CopyMemory vs C++ memcpy
- 8. Truyền mảng tới tham số hàm trong OpenCL
- 9. Tạo một mảng chỉ tới một phần của mảng khác?
- 10. Trong hàm vận hành gán, mảng là memcpy hoàn toàn
- 11. chuyển một mảng tới json.stringify
- 12. con trỏ malloc tới mảng
- 13. C# Windows 8 Store (Metro, WinRT) mảng Byte tới BitmapImage
- 14. C# Từ điển của mảng
- 15. Chuyển đổi từ kép thành float trong Java
- 16. Ánh xạ Ma trận Eigen tới một mảng C
- 17. Danh sách Python của mảng np tới mảng
- 18. Gửi mảng 2D tới Cuda Kernel
- 19. tạo mảng con trỏ tới các tệp
- 20. Thêm hai mảng giá trị float trong Haskell
- 21. Sử dụng memcpy để sao chép một loạt các yếu tố từ một mảng
- 22. Nhận các hàng từ bảng mysql tới các mảng php
- 23. Làm thế nào để chuyển đổi một mảng các chuỗi thành một mảng float trong numpy?
- 24. Cách chuyển đổi mảng 4 byte thành float trong java
- 25. C++ class constructor cho mảng
- 26. C# memcpy tương đương
- 27. Một con trỏ tới mảng 2d
- 28. Lấy một mảng cấu trúc từ dll gốc tới C# application
- 29. memcpy trong C#
- 30. C++ Mảng và make_unique
Phụ thuộc vào ý bạn bằng cách an toàn. –