C++怎么定义超长的整型?long long int不行?
如果你想做关大数的计算如12132382832489238492329329392 很长甚至有100~200位的大数 应该用字符数组 或整型数组保存这个大数再进行相关计算
例如大数相加
#include<iostream>
#include<string.h>
using namespace std ;
int Maxlen = 0 ;
char a[110] , b[110] ;
int an1[110] , an2[110] ;
int Addition(int maxlen , int an1[] , int an2[] );
int main()
{
int i , j ;
cin >> a ;
memset(an1,0,sizeof(an1));
for(j = 0, i = strlen(a)- 1 ; i >= 0 ; i --)
an1[j++] = a[i] - '0';
while( cin >> b )
{
if(strcmp( b , "0" ) == 0 )
break;
else
memset( an2 , 0 , sizeof(an2) ) ;
int len1 = strlen(a) ;
int len2 = strlen(b) ;
if(len1 > len2 )
Maxlen = len1 ;
Maxlen = len2 ;
for(j = 0 , i = len2 - 1 ; i >= 0 ; i --)
an2[j++] = b[i] - '0';
Addition ( Maxlen , an1 , an2 ) ;
}
for( i = 100 ; i >= 0; i -- )
{
if( an1[i] != 0 )break;
}
for(;i>=0;i--)
cout << an1[i] ;
}
int Addition( int maxlen , int an1[] , int an2[] )
{
for( int i = 0 ; i < maxlen ; i++ )
{
an1[i] += an2[i] ;
if( an1[i] >= 10 )
{
an1[i] -= 10 ;
an1[i + 1] ++ ;
}
}
return 0;
}
在WINDOWS和LINUX环境下,目前大多数编译器long long类型的定义为64位整数,基本可以满足常规的应用。
如果你所说的超长的整数需要更长的位数,目前只有靠自己定义了,这个在C++里面用class是很容易实现的,可以到网上搜索一下参考的例子,也可以参考此文,里面有详细的C++代码。
代码参考链接地址: http://bbs.csdn.net/topics/370046872
如果是VC的话,long long 没理由不行
如果是windows下的devC++或其他g++编译的话,建议试试__int64,和long long一样的
如果是Linux或Unix的话,除非是32位以下的系统,否则都可以用long long