#12151: 差別在哪???


ckscks038038 (yang揚)

學校 : 不指定學校
編號 : 66583
來源 : [140.113.138.226]
最後登入時間 :
2017-06-06 00:01:09
a002. 簡易加法 | From: [140.113.138.226] | 發表日期 : 2017-06-06 00:26

第一種

#include <iostream>

using namespace std;

 

int main() {

 

int a,b;

while(cin >> a >> b ){

a=a+b;

cout << a << "\n";

 

}

 

return 0;

 

}

------------------------

第二種

#include <iostream>

using namespace std;

 

int main() {

 

int a,b;

while(1){

cin >> a >> b;

a=a+b;

cout << a << "\n";

 

}

 

return 0;

 

}

--------------------------------

兩個都可以執行

第一種如果輸入超過10位數是直接終止程序

第二種如果輸入超過10位數會不斷跑數字迴圈

 

請問為什麼會這樣@@?

 
#12153: Re:差別在哪???


who_am_I (kruztw)

學校 : 國立臺灣師範大學
編號 : 54056
來源 : [36.224.144.147]
最後登入時間 :
2023-04-22 22:46:31
a002. 簡易加法 | From: [140.122.36.52] | 發表日期 : 2017-06-06 20:18

第一種

#include

using namespace std;

 

int main() {

 

int a,b;

while(cin >> a >> b ){

a=a+b;

cout << a << "\n";

 

}

 

return 0;

 

}

------------------------

第二種

#include

using namespace std;

 

int main() {

 

int a,b;

while(1){

cin >> a >> b;

a=a+b;

cout << a << "\n";

 

}

 

return 0;

 

}

--------------------------------

兩個都可以執行

第一種如果輸入超過10位數是直接終止程序

第二種如果輸入超過10位數會不斷跑數字迴圈

 

請問為什麼會這樣@@?



int 的最大值為2147483647

所以如果你輸入的值超過這個數字

那麼系統會判斷你輸入錯誤

因此

若把輸入放在while裡

那麼你輸入的不是他要的

因此他就會跳出來

但第二種是

你縱使輸入錯誤

他也沒法跳出

因此他就整個陷入迴圈

也不知道要輸出什麼(因為你輸入的是錯的)

所以他就隨便亂輸出

懂了嗎

 

若有幫助,可以光顧以下我的部落格嗎?

想衝衝人氣

http://ntnuee40475032h.pixnet.net/blog

謝謝

 
ZeroJudge Forum