程式有一點小狀況,for C語言~~

2009-04-27 6:54 pm
請問一下,有關這段程式,我用VC++ 6.0,這個程式是要得知一段文字內有幾個7的數字出現,這個程式執行出來是沒問題,但是只要數入12位數以上輸出就錯了,為什麼會這個樣子,如果可以的話,請不要留那種猜測的答案,先謝過囉。

int num, tem;
int count = 0;

printf("enter number: ");
scanf("%d", &num );


while(num > 0){
tem = num % 10;
num /= 10;
if(tem == 7)
count++;
}


printf("%d\n", count );

回答 (2)

2009-04-27 10:05 pm
✔ 最佳答案
基本上, 你一開始設計的出發點及思考方向就有問題了.


一個 unsigned int 只有4個bytes,最多只能表達到2的32次方.
更何況你只有使用int呢.


如果是這個程式, 我會建議你直接輸入字串, 然後針對字串去處理這個字串中有幾個 字元'7' 出現.
參考: myself
2009-04-27 8:01 pm
size of an "int" variable has a limit of 2^32 = 4294967296 in a 32 bit system. A number with 12 digits will overflow the variable.


收錄日期: 2021-04-30 12:59:44
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20090427000010KK02619

檢視 Wayback Machine 備份