I have used the function atoi to convert character strings to int and it’s working fine but when I gave
num = atoi (argv[1]) ;
// argv contain 4294967295 maximun value of 32 bit integer
it’s giving me 2147483647 answer which is basically half of 4294967295
i guess that its because of difference of bytes in char and int.
Can any one explain whats happening to bits and bytes
and how to fix it or convert it to int
You’ve run into the maximum value of an integer. Since
atoireturns anint, it is limited to the size of an integer on your machine. It looks like your machine uses 32-bitints.In case you missed it (it’s easy to miss), 2147483647 = (2 ^ 31) – 1. Remember that
ints can be negative, and the leftmost bit is the sign bit in that case. That’s why you see the number being “limited” to 2147483647.Try defining
numasunsigned intinstead ofint, and usestrtoulinstead ofatoi.