c++ - Type casting when exceeding the limit -
i want multiply 2 int numbers and, in order prevent exceeding int limit (2147483647), result saved in long long variable. so, try piece of code:
int a, b; long long result = * b; and it doesn't work! if a=50000 , b=50000 result=-1794967296.
therefore, have apply type casting a , b:
int a, b; long long result = (long long)a * (long long)b; why necessary apply type casting in case?
note: don't want change data type of a , b, need keep them int.
since a , b int, product a*b int also. product big overflows , incorrect value.the cast needed product long long.
by way, don't need cast both operands. 1 enough:
long long result = * (long long)b; the other 1 promoted long long also. see this online demo.
by way, prefer c++-style cast on c-style cast:
long long result = * static_cast<long long>(b); hope helps.
Comments
Post a Comment