首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-11-03 
XP系统不支持long long吗?代码通不过去555对long long 赋值出现错误,我的是XP SP2:C/C++ code#include st

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 ) ; 

热点排行