如果我有代码:
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)
问题:
大端机器上的行为是否相同?
如果我在b中指定一个值或者进行类型转换,那么大端的结果是否相同?
#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,浮点值也不能正确打印?