为输入的数字获取意外的输出以找到多维数据集

时间:2019-03-20 15:43:06

标签: c

在这里,我不仅尝试找出任何数字的多维数据集,而且我想找出输入的数字是乘以其数字的计数。 例如:-100乘以100的三倍。

每当我输入3位以上的数字时 意外输出为负数。

#include<stdio.h>
#include<conio.h>

int cube(int);

void main()
{
    int n,ans;

    printf("enter a number : ");
    scanf("%d" , &n);

   ans=cube(n);
    printf("%d" , ans);
}

int cube(int num)
{
    int count,temp,i,add=1;

    temp=num;
    while(temp>0)
    {
        temp=temp/10;
        count++;
    }
    printf("%d\n" , count);

    for(i=1;i<=count;i++)
    {
        add=add*num;
    }

    return add;
}

例如:-

输入数字:1000
4
-727379968

但是同时我输入的号码是10101

输入数字:10101
5
1343051877

我正在得到这个输出。

1 个答案:

答案 0 :(得分:0)

您正在溢出,因为1000 ^ 4是1000000000000,它肯定高于 string(384) "Array ( [access_token] => #token_is_here [token_type] => bearer [expires_in] => 3600 [refresh_token] => #refresh_token_is_here [uid] => 7 [info] => Array ( [name] => #name_is_here [code] => #some_code [email] => #some_mail_address ) [policy] => Array ( [write_hours] => 1 ) ) " (在我的系统上为2147483647)的值。您应该使用适当的数据类型,例如INT_MAX或检查是否存在如下溢出:

long