对于一个简单的程序,该任务是创建一个接受10位电话号码的程序,然后将其读回给用户。 有要控制,以确保:做基本检查时发生奇怪的数学错误C
第一位数不是0
即进入人数为10号。
错误检查看起来很简单;我想用一个while循环来确保数字的范围在1000000000和9999999999之间,但根据独立计算,它似乎应该是这样。
while ((MDN - valueCheck < 0) || (MDN > 9999999999)) {
printf("Entered number is not ten digits. Please re-enter.\n");
scanf("%d", &MDN);
}
两个MDN
和valueCheck
是long long
类型变量(使得范围可以晃过2147483647; IIRC长长是64位),但他们似乎仍然被列为32位整数,如进入2147483647
(或者任何较低的电话号码都适用),但输入2,147,483,648(或任何以上)会使其显示为-2147483647
。
与上述相关的是,输入一个较大的数字,该值不仅包含在32位整数的范围内,而且循环后由printf
语句打印的电话号码始终等于输入的数字减去两倍于32位整数的限制。
是否有任何简单的方法使程序实际工作在64位数字中,就像我想要的那样?算法看起来很稳定,如果我可以使数学正常工作。的scanf("%d", &MDN);
从人的scanf
如何变量MDN和valueCheck被填充? – congusbongus
为什么不把电话号码读入字符数组? – Owen
scanf中的“%d”扫描64位整数?我认为这就像“%lld”。如何声明MDN和valueCheck? –