在旧编译器下,总结scanf'ed数字有时会失败

时间:2012-12-18 15:45:48

标签: c

我有以下代码添加输入编号。 当我输入12345时,它给出了正确的结果但是当我输入56789时,它给了我错误的结果。

任何帮助将不胜感激......

#include <stdio.h>
#include <conio.h>
main()
{
int d1, d2, d3, d4, d5, sum, number, n;
clrscr();
scanf("%d", &number);
printf("number=%d\n",number);
n=number;
d1=n % 10;
n=n / 10;
d2=n % 10;
n=n / 10;
d3=n% 10;
n=n / 10;
d4=n% 10;
n=n / 10;
d5=n;
sum=d1 + d2 + d3 + d4 + d5;
printf ("sum of digits =%d\n", sum);
getch();
}

输出图片中的结果.. enter image description here

1 个答案:

答案 0 :(得分:11)

您可能会溢出变量,请尝试使用long代替int。对于16位int,范围为-3276832767。您可以通过打印sizeof(int)轻松测试这一点,2可能是4(16位),而不是更常见的{{1}}(32位)。

为了Pete的缘故,停止使用Turbo C ++ 。那里有无数更好的选择。