XP系统不支持long long吗?代码通不过去·555,该怎么解决
XP系统不支持long long吗?代码通不过去·555
对long long 赋值出现错误,我的是XP SP2:
但是我在数后面加里LL说明符号后就通过了··但是输出结果却不对··开始以为不支持LL·
所以用sizeof检测,的确是8个字节啊,问题到底出在哪里了呢:
XP系统是32位的吧··是这个原因吗?我觉得我这个编译器还是支持C99的,虽然可能不是100%支持,
但是至少可以支持long long 吧。
------解决方案--------------------
可能你的printf格式没有写对,把代码换成C++在CB里结果正确
对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 ) ;