對於一個簡單的程序,該任務是創建一個接受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? –