Вопросы по теме 'type-punning'

Допустимо ли приведение указателя int к указателю с плавающей запятой, если они имеют одинаковое выравнивание?
Предположим, что оба int и float выровнены по 4 байта. Согласно ISO C99 6.3.2.3 п.7: Указатель на объект или неполный тип может быть преобразован в указатель на другой объект или неполный тип. Если результирующий указатель неправильно...
115 просмотров

Законно ли набирать тип с помощью указателя на объединение в C?
Этот вопрос навеян кодом из этого вопроса , скопированным ниже, который выполняет недопустимый каламбур с помощью указателя: # include <stdio.h> int main() { char p[]={0x01,0x02,0x03,0x04}; int *q = p; printf("%x",*q);...
159 просмотров
schedule 07.12.2022

Является ли доступ к одному элементу в объединении, скопированном из объединения с другим набором элементов, неопределенным или неопределенным?
Рассмотрим следующий фрагмент кода, предполагая, что A и B являются тривиальными типами одинакового размера, скажем, int64_t и double , или что-то подобное: union Punner { A x; B y; }; Punner copy(Punner in) { return in; } A pun(B...
50 просмотров
schedule 13.11.2022

memcpy() для члена структуры, полученного из указателя opque
Допустим, у меня есть API: // api.h - Others can #include this header #include <cstdint> class A { public: // Write data into an opaque type. // The user shouldn't directly access the underlying bits of this value. // They should use...
79 просмотров

Ошибка строгого сглаживания для преобразования fp16 в fp32
У меня есть функция конвертации fp16 в fp32 static float fp16_to_fp32(const short in){ signed int t1, t2, t3; float out = 0; t1 = (in & 0x7fff) << 13 + 0x38000000; t2 = (in & 0x8000) << 16; t3 = in &...
42 просмотров
schedule 01.10.2022