印花浮漂.(PowerPC)下

ede*_*ddy 8 c powerpc

我正在尝试打印花车.虽然可变参数函数不适用于浮点数,因此它们被提升为double.我可以通过将其强制转换为双重来摆脱警告.在某些powerpc架构上打印结果时,如果使用%f打印,则会给出不正确的值.为什么?

测试代码:

 #include <stdio.h>

 #define _echo_size(X) \
        printf ("Sizeof "#X" %u\n", sizeof(X))

int main (void)
{

        float x;
        long usec = 7L;

        _echo_size(float);
        _echo_size(double);
        _echo_size(short);
        _echo_size(int);
        _echo_size(long);
        _echo_size(long long);

        x = ((float) usec) / 2;
        printf("Expected: 3.5 Got: %1.1f\n", (double) x);
        printf("Expected: 3.5 Got: %1d.%.1d\n", (int)x,
                (int)((x-(int)x)*10));
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

X86系统结果:

Sizeof float 4
Sizeof double 8
Sizeof short 2
Sizeof int 4
Sizeof long 8
Sizeof long long 8
Expected: 3.5 Got: 3.5
Expected: 3.5 Got: 3.5
Run Code Online (Sandbox Code Playgroud)

ppc系统结果:

Sizeof float 4
Sizeof double 8
Sizeof short 2
Sizeof int 4
Sizeof long 4
Sizeof long long 8
Expected: 3.5 Got: 0.0  <--- Why this ?
Expected: 3.5 Got: 3.5
Run Code Online (Sandbox Code Playgroud)

这是工具链中的错误吗?否则打印花车的优雅方式是什么?

小智 -3

我想这都是关于“大端”和“小端”