__Int64's Multiplication

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.

+4
source share
1 answer

not assuming that a and b are positive:

 __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) .

+4
source

All Articles