472,352 Members | 1,526 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 472,352 software developers and data experts.

Problems with 64bit integer constant

I have tried searching the newsgroup along with the GCC site and could
not find what I think is probably a simple solution.

I am using a 64bit unsigned long long integer and can manipulate 64bits
within the variable but I cannot assign a 64bit constant to it.

With my simple test program:

int main()
{
unsigned long long test;

test = 18446744073709551606;
test = 0xFFFFFFFFFFFFFFF6;
}

I get the following errors with gcc v3.3.x and 3.4:

test.cpp:7: warning: this decimal constant is unsigned only in ISO C90
test.cpp:7: error: integer constant is too large for "long" type
test.cpp:8: error: integer constant is too large for "long" type
I have also tried using variations with no success:
test = (unsigned long long)18446744073709551606;

There must be a way to do this, and it is probably just something
simple that I am overlooking. Can anyone help?

Thanks.

Jul 22 '05 #1
7 17005
Jeff Gilchrist wrote:
test = 18446744073709551606;
test = 0xFFFFFFFFFFFFFFF6;


Add the suffix "LLU" to the constants and it should work for you.

-- John
Jul 22 '05 #2
Jeff Gilchrist wrote:
I have tried searching the newsgroup along with the GCC site and could
not find what I think is probably a simple solution.

I am using a 64bit unsigned long long integer and can manipulate 64bits
within the variable but I cannot assign a 64bit constant to it.

With my simple test program:

int main()
{
unsigned long long test;
There is no 'long long' data type in C++. There is in C99. Perhaps you
need to post your question to the C newsgroup (comp.lang.c)?
test = 18446744073709551606;
test = 0xFFFFFFFFFFFFFFF6;
}

I get the following errors with gcc v3.3.x and 3.4:

test.cpp:7: warning: this decimal constant is unsigned only in ISO C90
The constant has a signed type _unless_ it has the U suffix. Try

test = 18446744073709551606U; // for "native" unsigned int

or

test = 18446744073709551606UL; // for "native" unsigned long

The constant is really too big to fit into a signed integer.
test.cpp:7: error: integer constant is too large for "long" type
test.cpp:8: error: integer constant is too large for "long" type
I have also tried using variations with no success:
test = (unsigned long long)18446744073709551606;

There must be a way to do this, and it is probably just something
simple that I am overlooking. Can anyone help?


If your _C++_ compiler natively supports 64-bit numbers, then it would be
under 'unsigned long' type, and not 'unsigned long long'. Otherwise, this
is a wrong forum to ask about it. Try gnu.g++.help.

Victor
Jul 22 '05 #3
Victor Bazarov wrote:
There is no 'long long' data type in C++. There is in C99. Perhaps
you need to post your question to the C newsgroup (comp.lang.c)?


You are right of course. I sometimes forget which things are in the C
standard and which are in the C++ since most C++ compilers treat C code
as a substet of C++ and its hard to tell the difference.

For people with 32bit processors, how does one create a 64bit data type
in C++ if 'int' and 'long' are both treated as 32bit in the
compiler(s)?

Thanks,
Jeff.

Jul 22 '05 #4
John Valko wrote:
Add the suffix "LLU" to the constants and it should work for you.

Thanks John, works like a charm.

Much appreciated,
Jeff.

Jul 22 '05 #5
Jeff Gilchrist wrote:
[..]
For people with 32bit processors, how does one create a 64bit data type
in C++ if 'int' and 'long' are both treated as 32bit in the
compiler(s)?


Usually that's achieved by means of some language extensions. E.g., VC++
has '__int64' and 'unsigned __int64' that can be used. Constants of these
types have non-standard suffixes 'i64' and 'ui64'.

V
Jul 22 '05 #6
Victor Bazarov wrote:
Jeff Gilchrist wrote:
[..]
For people with 32bit processors, how does one create a 64bit data type
in C++ if 'int' and 'long' are both treated as 32bit in the
compiler(s)?
Usually that's achieved by means of some language extensions. E.g., VC++
has '__int64' and 'unsigned __int64' that can be used.


And gcc has 'long long' and 'unsigned long long'.
Constants of these types have non-standard suffixes 'i64' and 'ui64'.


What do you mean by "non-standard suffixes"?

Jul 22 '05 #7
Rolf Magnus wrote:
Victor Bazarov wrote:

Jeff Gilchrist wrote:
[..]
For people with 32bit processors, how does one create a 64bit data type
in C++ if 'int' and 'long' are both treated as 32bit in the
compiler(s)?


Usually that's achieved by means of some language extensions. E.g., VC++
has '__int64' and 'unsigned __int64' that can be used.

And gcc has 'long long' and 'unsigned long long'.

Constants of these types have non-standard suffixes 'i64' and 'ui64'.

What do you mean by "non-standard suffixes"?


AFAIK, there are no standard suffixes 'i64' and 'ui64'. There are 'L',
'U', 'UL', 'F'. And by "constants" I actually meant "literals". My bad.
Jul 22 '05 #8

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

3
by: Christian McArdle | last post by:
REQUEST FOR DISCUSSION (RFD) unmoderated group comp.os.ms-windows.programmer.64bit This is a formal Request For Discussion (RFD) to create...
29
by: SysSpider | last post by:
Hi again, This is my problem: when i try to compile the code that contains the function below, i get this: -- gcc:21: error: case label does...
6
by: fctk | last post by:
hello, i'm trying to compile this small program: int main(void) { unsigned long int max; max = 4000000000;
6
by: yxq | last post by:
Hello, The File.Delete(VS2005) function can not delete file on Vista-64bit, why? And, what changes of API between 32-bit and 64-bit? Thank you
1
by: Thomas Kehl | last post by:
Hello. I use the fallowing Functions to send Message from one Application to another. This is working correct on a 32bit System. But on a 64Bit...
17
by: matevzb | last post by:
I've ran into some fishy code that, at first glance, is buggy, but it seems to work correctly and none of the compilers I've tried (five so far, on...
18
by: cman | last post by:
Hi guys, why does this fail raising bad_alloc int *v = new int ; if this succeeds int *v = (int *) malloc((unsigned)6000000000) both on the...
2
by: M O J O | last post by:
(I'm using Visual Studio 2008) I want my new develloper pc to be Vista 64bit, but all my clients are so far 32bit (XP), so my questions are: ...
0
by: yxq | last post by:
Hello, The code below can popup the property dialog of a file, it works well on XP, Vista 32bit, but it will not work on Vista 64bit, how to...
1
by: Kemmylinns12 | last post by:
Blockchain technology has emerged as a transformative force in the business world, offering unprecedented opportunities for innovation and...
0
by: Naresh1 | last post by:
What is WebLogic Admin Training? WebLogic Admin Training is a specialized program designed to equip individuals with the skills and knowledge...
0
jalbright99669
by: jalbright99669 | last post by:
Am having a bit of a time with URL Rewrite. I need to incorporate http to https redirect with a reverse proxy. I have the URL Rewrite rules made...
0
by: AndyPSV | last post by:
HOW CAN I CREATE AN AI with an .executable file that would suck all files in the folder and on my computerHOW CAN I CREATE AN AI with an .executable...
0
hi
by: WisdomUfot | last post by:
It's an interesting question you've got about how Gmail hides the HTTP referrer when a link in an email is clicked. While I don't have the specific...
0
by: Matthew3360 | last post by:
Hi, I have been trying to connect to a local host using php curl. But I am finding it hard to do this. I am doing the curl get request from my web...
0
Oralloy
by: Oralloy | last post by:
Hello Folks, I am trying to hook up a CPU which I designed using SystemC to I/O pins on an FPGA. My problem (spelled failure) is with the...
0
BLUEPANDA
by: BLUEPANDA | last post by:
At BluePanda Dev, we're passionate about building high-quality software and sharing our knowledge with the community. That's why we've created a SaaS...
0
by: Rahul1995seven | last post by:
Introduction: In the realm of programming languages, Python has emerged as a powerhouse. With its simplicity, versatility, and robustness, Python...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.