相关疑难解决方法(0)

这段代码将如何在大端机器上运行?

如果我有代码:

uint64_t a = 0x1111222233334444;
uint32_t b = 0;
b = a;
printf("a is %llx ",a);
printf("b is %x ",b);
Run Code Online (Sandbox Code Playgroud)

输出是:

 a is 1111222233334444 b is 33334444
Run Code Online (Sandbox Code Playgroud)

问题:

  1. 大端机器上的行为是否相同?

  2. 如果我在b中指定一个值或者进行类型转换,那么大端的结果是否相同?

c endianness

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

使用printf打印出浮动值

#include<stdio.h>
#include<stdlib.h>

int main(void)
{
  int x, *ptr_x;
  float f , *ptr_f;

  ptr_f = &f;
  ptr_x = &x;
  *ptr_x = 5;
  *ptr_f = 1.5; //printf("%d %f\n", f,x);

  printf ("\n\nxd = %d \t xf = %f \n ff = %f \t fd = %d", x,x,f,f);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

ff =%f的输出不是预期的.

xd = 5 xf = 0.000000
ff = 0.000000 fd = 1073217536

此代码的要点是显示如果使用%d打印浮动值并且打印int值为%f将会发生什么.

为什么即使我使用%f,浮点值也不能正确打印?

c printf pointers

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

标签 统计

c ×2

endianness ×1

pointers ×1

printf ×1