打印出 MATH_PI 打印出一个随机浮点值

时间:2021-03-24 08:52:58

标签: c

我一直在用 C 语言练习动态内存分配和指针。我试着打印出随机变量来看看它是如何工作的。
它可以打印出字符和整数,但由于某种原因,无论我尝试什么,我都无法打印出我想要的浮点值。
我尝试手动输入 pi,我尝试使用 math.h 中的常量。它打印出一个巨大的完全随机数,我完全不知道为什么它不起作用。
我试过 printf("%f\n", (float) memory[3]))printf("%f\n", (float) *(float *)&memory[3])) 但它不起作用。

uint16_t* rezerviraj(int sizeToAllocate){

    uint16_t *reservedSpace = malloc(sizeToAllocate + 4 * sizeof(char) + sizeof(float) + sizeof(int32_t));
    memset(reservedSpace, 23246, sizeToAllocate);

    return reservedSpace;
}

void brisi(uint16_t* pomnilnik){
    free(pomnilnik);

}

uint16_t* vstavi(uint16_t* memory){
    *(char *)&memory[0] = 'X';
    *(char *)&memory[1] = 'P';
    *(char *)&memory[2] = 'O';
    *(float *)&memory[3] =  3.141312;
    *(int32_t *)&memory[4] = 23246;
    *(char *)&memory[5] = '!';

    return memory;
}

void print(uint16_t* pomnilnik){
    printf("%c  \n", (char) *(char *)&memory[0]);
    printf("%c \n", (char) *(char *)&memory[1]);
    printf("%c  \n", (char) *(char *)&memory[2]);
    printf("%f\n", (float) memory[3]);
    printf("%d  \n", memory[4]);
    printf("%c \n", (char) *(char *)&memory[5]);

}

int main() {

   uint16_t *test= (uint16_t*) rezerviraj(500);
   test = vstavi(test);
   print(test);
   brisi(test);

    return 0;
}

0 个答案:

没有答案
相关问题