Вопросы по теме 'type-punning'
Допустимо ли приведение указателя int к указателю с плавающей запятой, если они имеют одинаковое выравнивание?
Предположим, что оба int и float выровнены по 4 байта. Согласно ISO C99 6.3.2.3 п.7:
Указатель на объект или неполный тип может быть преобразован в указатель на другой объект или неполный тип. Если результирующий указатель неправильно...
115 просмотров
schedule
18.02.2024
Законно ли набирать тип с помощью указателя на объединение в 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 просмотров
schedule
10.10.2022
Ошибка строгого сглаживания для преобразования 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