#include <iostream> #include <chrono> using namespace std; int main() { auto start = chrono::high_resolution_clock::now(); unsigned long long int a = 1; for (int i = 0; i < 100; ++i) { a = a + a; cout << "Zikl " << i << " "<< a << endl; } auto end = chrono::high_resolution_clock::now(); chrono::duration<float> duration = end - start; cout << "Duration " << duration.count() << "sek"; } Код #include <iostream> #include <chrono> using namespace std; int main() { auto start = chrono::high_resolution_clock::now(); unsigned long long int a = 1; for (int i = 0; i < 100; ++i) { a = a + a; cout << "Zikl " << i << " "<< a << endl; } auto end = chrono::high_resolution_clock::now(); chrono::duration<float> duration = end - start; cout << "Duration " << duration.count() << "sek"; } Проходит до "Zikl 62 9223372036854775808" и упирается в порог unsigned long long int, все ок, но стоит сделать функцию: #include <iostream> #include <chrono> using namespace std; int func(unsigned long long int a) { a = a + a; return a; } int main() { auto start = chrono::high_resolution_clock::now(); unsigned long long int a = 1; for (int i = 0; i < 100; ++i) { a = func(a); cout << "Zikl " << i << " "<< a << endl; } auto end = chrono::high_resolution_clock::now(); chrono::duration<float> duration = end - start; cout << "Duration " << duration.count() << "sek"; } Код #include <iostream> #include <chrono> using namespace std; int func(unsigned long long int a) { a = a + a; return a; } int main() { auto start = chrono::high_resolution_clock::now(); unsigned long long int a = 1; for (int i = 0; i < 100; ++i) { a = func(a); cout << "Zikl " << i << " "<< a << endl; } auto end = chrono::high_resolution_clock::now(); chrono::duration<float> duration = end - start; cout << "Duration " << duration.count() << "sek"; } И происходит что-то неведомое, хотя тип данных один Zikl 29 1073741824 Zikl 30 18446744071562067968 Код Zikl 29 1073741824 Zikl 30 18446744071562067968 Почему (я очень новичок в c++)?