XP系统不支持long long吗?代码通不过去·555,该怎么解决

XP系统不支持long long吗?代码通不过去·555
对long long 赋值出现错误,我的是XP SP2:

C/C++ code
#include <stdio.h>
int main( void )
{
    unsigned int un = 3000000000u ;
    short end = 200 ;
    long big = 65537 ;   long long verybig = 12345678908642LL ;

    printf( "un = %u and not %d\n" , un, un ) ;
    printf( "end = %hd and %d\n" , end, end ) ;
    printf( "big = %ld and not %hd\n" , big, big ) ;

    printf( "verybig: %u \n" , sizeof( verybig ) ) ;

    printf( "verybig = %lld and not %ld\n" , verybig, verybig ) ;

    return 0 ;
}





但是我在数后面加里LL说明符号后就通过了··但是输出结果却不对··开始以为不支持LL·
所以用sizeof检测,的确是8个字节啊,问题到底出在哪里了呢:






XP系统是32位的吧··是这个原因吗?我觉得我这个编译器还是支持C99的,虽然可能不是100%支持,
但是至少可以支持long long 吧。




------解决方案--------------------
可能你的printf格式没有写对,把代码换成C++在CB里结果正确
C/C++ code
#include <iostream>
using namespace std;

int main( void )
{
    unsigned int un = 3000000000u ;
    long long verybig = 12345678908642LL ;

    cout<<un<<endl;
    cout<<sizeof(verybig)<<endl;
    cout<<verybig<<endl;

    return 0 ;
}

------解决方案--------------------
只要你的编译器支持就OK了。错就错在你用printf的格式串上,在Windows上你应该使用%I64d来输出,在Linux上才用你那个。更改如下:
C/C++ code
printf( "verybig = %I64d and not %ld\n" , verybig, verybig ) ;