C++ int Multiplication
#include <iostream>
using namespace std ;
int main ( int argc , char * argv []){
// Check the number of parameters
if ( argc < 1 ) {
// Tell the user how to run the program
std :: cerr << "Usage: " << argv [ 0 ] << " takes 1 parameter: the value of int to be multiplied " << std :: endl ;
return 1 ;
}
int a = stoi ( argv [ 1 ]);
long int b = stol ( argv [ 1 ]);
cout . precision ( 10 );
cout << "Multiple itself as int: " << a * a << endl ;
cout << "Multiple itself as long int: " << b * b << endl ;
}
Compile and run the program using -std=c++11
.
cpp-int-multiply ‹master* › ./int-multiplication.out 1000
Multiple itself as int: 1000000
Multiple itself as long int: 1000000
cpp-int-multiply ‹master* › ./int-multiplication.out 10000
Multiple itself as int: 100000000
Multiple itself as long int: 100000000
cpp-int-multiply ‹master* › ./int-multiplication.out 100000
Multiple itself as int: 1410065408
Multiple itself as long int: 10000000000
cpp-int-multiply ‹master* › ./int-multiplication.out 1000000
Multiple itself as int: -727379968
Multiple itself as long int: 1000000000000
The results seems to be weird because the multiplicated number exceeds the max of int.
Within for loops, the int i = 0
should be used carefully. The calculation i*i
is problematic even i is not exceeding the max. There are solutions to this. We could convert i
to double (double)i
in situ. Or we could simple use long int
.
Source code at repl.it.
Results from asciinema.
A Random #TIL# for You