Так что у меня странная проблема. Чем это вызвано этим?Проблема memcpy, преобразующая отрицательные значения из int8_t в int16_t
#include <inttypes.h>
#include <stdio.h>
#include <string.h>
int main()
{
int16_t a = 0;
int8_t b = 0;
b = INT8_MIN;
void* a_ptr = &a;
void* b_ptr = &b;
memcpy(a_ptr,b_ptr,sizeof(int8_t));
printf("min b: %d | copied a: %d", b, a);
}
Результат: мин. B: -128 | скопировано a: 128.
Все отрицательные значения, похоже, имеют эту проблему. Я хочу использовать memcpy, так что я должен сделать, чтобы сделать эту работу?
Вы не можете использовать 'memcpy' для копирования 8-битного значения в 16-битное значение. Перестань пытаться. –
Разве это не больший тип? – bge0
Да, но 'memcpy' не делает никаких преобразований - он просто копирует байты. Битовая диаграмма вывода будет идентична входу, но в этом случае вы используете два типа, которые интерпретируют это значение по-разному. –