c++ - Why do I get: -9223372036854775808 -


#include <iostream> #include <sstream> #include <numeric> #include <math.h>  using namespace std;  int64_t splitadd(int64_t value) {     ostringstream intstream;     intstream << value;     string intstring(intstream.str());     return accumulate(intstring.begin(), intstring.end(), 0) - (intstring.size() * int64_t('0')); }  int main(int argc, char *argv[]) {     int64_t maxpower = 50;     int64_t results[maxpower];     (int64_t tuple = 0; tuple <= maxpower; tuple++) {         for(int64_t power = 0; power <= maxpower; power++) {             int64_t value = pow(tuple, power);             while (value > 9) {                 value = splitadd(value);             }             results[power] = value;         }         cout << tuple << endl;         (int = 0; < maxpower; i++) {             cout << results[i] << ',';         }         cout << endl;     } } 

after while, value: -9223372036854775808 repeatedly. i'm running in code runner 2 also, not sure if make difference.

the 1 glaring error this:

int64_t maxpower = 50; int64_t results[maxpower];  // <-- not legal, let's pretend //... (int64_t power = 0;               power <= maxpower; // <-- @ loop constraints              power++)  {       //.... } results[power] = value;  // <-- buffer overrun 

since maxpower 50, accessing element that's out of bounds. undefined behavior

also, make code legal c++, either declare array of 50:

int64_t results[50]; 

or declare std::vector<int64_t>.

when , use at() instead of [], better view of how program breaks. see the live example using std::vector here.


as "odd number", getting numeric overflow here:

int64_t value = pow(tuple, power); 

if tuple 3, , power 41, value overflows int64_t type.

maybe need use arbitrary precision library (one preferably has overloaded requisite mathematical operators) or write own, instead of using "regular" c++ types. won't or shouldn't overflow.


Comments

Popular posts from this blog

get url and add instance to a model with prefilled foreign key :django admin -

android - Keyboard hides my half of edit-text and button below it even in scroll view -

css - Make div keyboard-scrollable in jQuery Mobile? -