我正在撰寫一個函式,該函式將整數向量作為輸入,并遍歷向量以獲得向量中的最大值和最小值,以及總和。引數向量中可能的最大整數是 1000000000。
void miniMaxSum(vector<long> arr) {
long sum = 0;
long min = 1000000000;
long max = 0;
for (int i = 0; i < arr.size(); i ) {
cout << arr[i] << endl;
sum = arr[i];
if (arr[i] < min) {
min = arr[i];
}
if (arr[i] > max) {
max = arr[i];
}
}
cout << sum << endl;
}
使用以下輸入向量作為引數:
vector<long> x = {793810624,895642170,685903712,623789054,468592370 };
總和為負數:-827229366
uj5u.com熱心網友回復:
long在大多數作業系統上通常是 32 位型別(至少 32 位)。所以它可以保持的最大值是2,147,483,647。
你的數字總和是3,467,737,930。所以它溢位了。
考慮使用unsigned long或long long(至少 64 位)或unsigned long long更大的數字。或者你甚至可以使用intmax_toruintmax_t來獲得支持的最大整數。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/439182.html
上一篇:如何將for回圈轉換為lapply函式以進行并行測驗?
下一篇:使for回圈在R中運行得更快
