Friday, June 4, 2010

不做不知道 ── C 格式化输出 64 位整数平台差异


有道是,"不看不知道,看了吓一跳"。今天为了输出一个 64 位的整数,有所斩获。

在 windows 平台下:


#include <stdio.h>

int 
main (void)
{
    long long a = 0xaaaabbbb;

    printf("sizeof(long long) = %d\n", sizeof(long long));
    printf("a = %I64d\n", a)/* only for windows platform */

   return 0;
}


在 linux 平台下:


    <<< ... >>>

    printf("a = %Ld\n", a)
/* for GNU */

    printf("a = %lld\n", a)/* for GNU another way */
 
    <<< ... >>>


不过,对于其他的平台又有不同的输出方式,不同的平台有不同的表示。其他的类 unix 的系统也与 linux 不同,比如: 

q 是 BSD 4.4 对 long long 形的标志, 参考链接

0 Comment(s):