c语言atoi与itoa用法以及超过long long int 型变量整数加减法

2024-12-16 12:32:19
推荐回答(4个)
回答1:

大整数的计算可以通过模运算来进行简化,也可以将其作为字符串读入,然后分段运算之后再进行拼接。

附:
atoi和itoa的示范代码如下:

#include
#include

void main( void )
{
char *s; int ix;
char buffer[20];
int i = 3445;
long l = -344115L;
unsigned long ul = 1234567890UL;

s = " -9885 pigs"; /* Test of atoi */
ix = atoi( s );
printf( "atoi test: ASCII string: %s\t\tinteger: %d\n", s, ix );

_itoa( i, buffer, 10 );
printf( "String of integer %d (radix 10): %s\n", i, buffer );
_itoa( i, buffer, 16 );
printf( "String of integer %d (radix 16): 0x%s\n", i, buffer );
_itoa( i, buffer, 2 );
printf( "String of integer %d (radix 2): %s\n", i, buffer );

_ltoa( l, buffer, 16 );
printf( "String of long int %ld (radix 16): 0x%s\n", l,
buffer );

_ultoa( ul, buffer, 16 );
printf( "String of unsigned long %lu (radix 16): 0x%s\n", ul,
buffer );
}

输出结果:

atoi test: ASCII string: -9885 pigs integer: -9885
String of integer 3445 (radix 10): 3445
String of integer 3445 (radix 16): 0xd75
String of integer 3445 (radix 2): 110101110101
String of long int -344115 (radix 16): 0xfffabfcd
String of unsigned long 1234567890 (radix 16): 0x499602d2

回答2:

将字符串转换成整形数值,如果可以的话。
如:

char *buf="1234";
int i=atoi(buf);
//则i = 1234;

回答3:

Linux 系统中 找man 吧
#include
int atoi(const char *nptr);
long atol(const char *nptr);
long long atoll(const char *nptr);
long long atoq(const char *nptr);

回答4:

一、atoi函数。
1 声明:
int atoi(const char *nptr);
2 功能:
参数nptr字符串,如果第一个非空格字符存在,是数字或者正负号则开始做类型转换,之后检测到非数字(包括结束符 \0) 字符时停止转换,返回整型数。否则,返回零。
3 举例:
atoi("1234");
的返回值为整型1234。

二、itoa函数。
1 声明:

char* itoa(int value,char* string,int radix);
2 功能:
将任意类型的数字转换为字符串。
int value 被转换的整数,char *string 转换后储存的字符数组,int radix 转换进制数,如2,8,10,16 进制等
3 举例:
char s[20];
itoa(12345,s,10);
函数会按照10进制将数值12345转为字符串。运行后s中保存字符串为"12345"。
4 注意:
itoa不是标准C语言函数,所以不能在所有的编译器中使用。

三、超过long long int 型变量整数加减法。
对于超过long long int,即64位整型的计算,包括加减乘除,C语言系统均没有提供直接的计算方式。对此,需要编写算法,用数组存储每一位的值,自行模拟计算过程。
对于这类算法,被称为大数计算。