10 x 1036778084 = ??

Jim Wilson jim.wilson@linaro.org
Fri Jul 8 22:42:00 GMT 2016


On 07/07/2016 10:07 PM, Nobby-Hirand wrote:
> I have just find strange answer, 10 x 1036778084 = 1777846248??

Your target has 32-bit integers.  The value 1036778084 is close to the 
largest representable value.  Multiplying by anything larger than 2 
causes an overflow, and the result gets truncated.  Try using %x to 
print hex values to see what is wrong.  Or use long long instead of int 
to get 64-bit values.

FYI With a more recent gcc version, you can compile with 
-fsanitize=undefined and get this:

weathertop:2044$ ./a.out
tmp.c:11:5: runtime error: signed integer overflow: 10 * 1036778084 
cannot be represented in type 'int'

FYI gcc-bugs@gcc.gnu.org is used for output from our bugzilla database. 
  You shouldn't send email to this address.  You should either send 
email to gcc-help or file a bug at https://gcc.gnu.org/bugzilla/

Jim



More information about the Gcc-bugs mailing list