Array to integer problem(integer too long).

Victor victor@ambra.ro
Wed Feb 16 14:11:00 GMT 2005


I have gcc version 3.4.1 compiled with long long support - but the 
result is the same.
If I try A simple program like this:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv) {
   long long int test;
   test = 89126342536;
}
when I compile I get the following error:
test.cpp: In function `int main(int, char**)':
test.cpp:14: error: integer constant is too large for "long" type(long 
long seems to have no effect - it steel refers to simple long for some 
reason).


"gcc -v" output:
Reading specs from /usr/lib/gcc/i586-mandrake-linux-gnu/3.4.1/specs
Configured with: ../configure --prefix=/usr --libdir=/usr/lib 
--with-slibdir=/lib --mandir=/usr/share/man --infodir=/usr/share/info 
--enable-shared --enable-threads=posix --disable-checking 
--enable-long-long --enable-__cxa_atexit --enable-clocale=gnu 
--disable-libunwind-exceptions 
--enable-languages=c,c++,ada,f77,objc,java 
--host=i586-mandrake-linux-gnu --with-system-zlib
Thread model: posix
gcc version 3.4.1 (Mandrakelinux 10.1 3.4.1-4mdk)

Brian Budge a scris:

>Ah, okay.  long int in most 32 bit system is the same as int.  Usually
>there is a type called long long which is 64 bits on 32 bit systems.
>
>  Brian
>
>
>On Wed, 16 Feb 2005 13:19:05 +0200, Victor <victor@ambra.ro> wrote:
>  
>
>>Thank you.
>>The problem is that I don't know what type to declare the numeric variable.
>>If I try A simple program like this:
>>#include <stdio.h>
>>#include <stdlib.h>
>>int main(int argc, char **argv) {
>>    long int test;
>>    test = 89126342536;
>>}
>>when I compile I get the following error:
>>test.cpp: In function `int main(int, char**)':
>>test.cpp:14: error: integer constant is too large for "long" type
>>
>>I know I must replace the line "long int test" with something else, but
>>I don't know with what.
>>Thank you.
>>
>>Brian Budge a scris:
>>
>>    
>>
>>>Hi Victor -
>>>
>>>The number you specify is larger than can be held in a 32 bit integer.
>>>Use atoll instead.
>>>
>>> Brian
>>>
>>>
>>>On Wed, 16 Feb 2005 12:53:50 +0200, Victor <victor@ambra.ro> wrote:
>>>
>>>
>>>      
>>>
>>>>I have this simple script:
>>>>
>>>>#include <stdio.h>
>>>>#include <stdlib.h>
>>>>#include <string.h>
>>>>int main(int argc, char **argv) {
>>>>   int test;
>>>>   char *numar = "89126342536";
>>>>   test = atoi(numar);
>>>>   printf("Test: %d", test);
>>>>}
>>>>
>>>>I want to convert the string numar to integer.
>>>>But the result - when I run the script is :
>>>>Test: 2147483647
>>>>and I would expect:
>>>>Test: 89126342536.
>>>>
>>>>It seems that the number is too big.
>>>>How can I solve this problem.
>>>>
>>>>Thank you.
>>>>
>>>>
>>>>
>>>>
>>>>        
>>>>
>>>
>>>      
>>>
>>    
>>
>
>  
>




More information about the Gcc-help mailing list