【发布时间】:2018-11-25 04:57:29
【问题描述】:
我在 C 中有这个简单的代码,每当我输入一个长度超过 9 位的 id 号码时,它都会打印一个不同的号码。怎么了?
void main() {
long id1;
double l1, w1;
printf("enter studint 1 id,lenght and weight: \n");
scanf("%ld %lf %lf", &id1, &l1, &w1);
printf("STUDINTS INFORMATION:");
printf("\n\n%-10.0ld\t %-4.3lf\t %-4.3lf\n", id1, l1, w1);
}
【问题讨论】:
-
首先检查
scanf()的返回值。 -
"我输入的身份证号码超过 9 位" --> 输入的号码是多少?打印了什么?
-
long范围只能是 [-2,147,483,647 ... 2,147,483,647]。超出该范围的数字正在自找麻烦。使用更宽的整数类型。 -
%-10.0ldforid1似乎不正确:如果id1 == 0输出将只有 10 个空格。