小编Ask*_*ker的帖子

奇怪的结果将指针打印为C中的float

我知道这是错的,gcc会给你一个关于它的警告,但为什么它会起作用(即数字打印正确,有一些舍入差异)?

int main() {
   float *f = (float*) malloc(sizeof(float));
   *f = 123.456;
   printf("%f\n", *f);
   printf("%f\n", f);
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

编辑: 是的,我正在使用带有32位机器的gcc.我很想知道其他编译器会得到什么结果.

在Christoph的建议之后,我更多地干涉了一些事情:

int main() {
   float *f = (float*) malloc(sizeof(float));
   *f = 123.456;
   printf("%f\n", f); // this
   printf("%f\n", *f);
   printf("%f\n", f); // that
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

这导致第一次printf打印的值与最后的printf不同,尽管是相同的.

c floating-point printf gcc pointers

1
推荐指数
1
解决办法
1357
查看次数

标签 统计

c ×1

floating-point ×1

gcc ×1

pointers ×1

printf ×1