求助:关于C语言两个乘法int溢出来 及其余基本类型溢出来的解决方法。

求助:关于C语言两个乘法int溢出来 及其余基本类型溢出来的解决方法。


#include<stdio.h>

main()
{
int a=3333333;
int b=4444444;
int c=a*b;

printf("c=%d",c);



}

#include
#include
#include
#define M 10005
char s1[M],s2[M],s[M];
int a[M],b[M],c[M];
int main()
{
int i,j,m,n,k;
while(~scanf("%s%s",s1,s2))
{
memset(c,0,sizeof(c));
n=strlen(s1);
m=strlen(s2);
k=n+m;//保证相乘后的位数不会大于k
printf("s1的长度=%d s2的长度=%d\n",n,m);
/*把字符串s1和s2逆序用数字排列*/
for(i=0; i a[i]=s1[n-i-1]-'0';
for(i=0; i b[i]=s2[m-1-i]-'0';
/* 乘运算*/
for(i=0; i for(j=0; j c[i+j]+=a[i]*b[j];
for(i=0; i {
if(c[i]>=10)
{
c[i+1]+=c[i]/10;
c[i]%=10;
}
}
/*去除前导0*/
i=k;
while(c[i]==0) i--;
/*判断两个非负数之积是否为0,以及逆序打印c[]*/
if(i else
{
for(; i>=0; i--)
printf("%d",c[i]);
}
printf("\n");
}
return 0;
}
这是一道大数乘法问题,输入用串,结果保存用数组

如果仅仅稍微不够,可以使用long/long long
如果要实现大数乘法,参考:https://blog.csdn.net/l_liangkk/article/details/51980763

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^