#12151: 差別在哪???


ckscks038038 (yang揚)


第一種

#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)


第一種

#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

謝謝