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

Amr*_*rma 3 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();
}
Run Code Online (Sandbox Code Playgroud)

输出结果如图..在此输入图像描述

Luc*_*ore 11

您可能会溢出变量,尝试使用long而不是int.对于一个16位的int,该范围为-3276832767.您可以通过打印轻松测试它sizeof(int),这可能是2(16位)而不是更常见的4(32位).

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