Can someone explain to me (in detail) how to multiply two __int64 objs and check if the result matches __int64.
Note. Do not use any routines that depend on the compiler or processor.
not assuming that a and b are positive:
a
b
__int64 a,b; //... __int64 tmp_result = abs(a) * abs(b) ; if ( ( a && b ) && ( ( tmp_result < abs(a) || tmp_result < abs(b) ) || ( tmp_result / abs(a) != abs(b)) || ( a == TYPE_MIN && b != 1) || ( b == TYPE_MIN && a != 1) ) ) std::cout << "overflow"; __int64 result = a * b;
EDIT: Adding code windows to code.
EDIT: I think that's enough ( a && a * b / a != b) .
( a && a * b / a != b)