convert long long integer to string using sprintf

?

=?iso-8859-1?Q?M=E5ns_Rullg=E5rd?=

what is format for sprintf to convert long long integer (64 bits) to
string?

The format for "long long" is %lld (or %llx etc.). Keep in mind
though, that a long long is not necessarily 64 bits. If you
specifically need 64 bits, use the types defined in stdint.h and the
format macros in inttypes.h.
 
J

Joe Wright

what is format for sprintf to convert long long integer (64 bits) to
string?
You could look it up? If int is %d and long is %ld could it be %lld ?
Just guessing. I haven't looked it up.
 
K

Keith Thompson

Måns Rullgård said:
The format for "long long" is %lld (or %llx etc.). Keep in mind
though, that a long long is not necessarily 64 bits. If you
specifically need 64 bits, use the types defined in stdint.h and the
format macros in inttypes.h.

And keep in mind that your runtime library's version of sprintf()
might not support "%lld". Mismatches between a compiler and the
runtime library it uses (for example, where the compiler supports
"long long", but sprintf() doesn't) are not uncommon.

Some older versions of sprintf() *might* use "%Ld" rather than "%lld".
 
S

Skarmander

Joe said:
You could look it up? If int is %d and long is %ld could it be %lld ?
Just guessing. I haven't looked it up.
Hmm, and since %f is used to printf() a double, I can use %f to scanf() a
double, right?

Looking it up (or, indeed, asking in an ng) nearly always beats trying the
obvious if the language wasn't specifically designed to accommodate that. C
definitely isn't.

S.
 
?

=?iso-8859-1?Q?M=E5ns_Rullg=E5rd?=

Skarmander said:
Hmm, and since %f is used to printf() a double, I can use %f to
scanf() a double, right?

Wrong. With scanf %f denotes a float, and %lf denotes a double. This
difference is because the arguments to printf are subject to type
promotion, so any float arguments are converted to double. The
arguments to scanf are pointers, so there is a need to differentiate
between pointer to float and pointer to double.
 
S

Skarmander

Måns Rullgård said:
Wrong. With scanf %f denotes a float, and %lf denotes a double. This
difference is because the arguments to printf are subject to type
promotion, so any float arguments are converted to double. The
arguments to scanf are pointers, so there is a need to differentiate
between pointer to float and pointer to double.
You're ruining my fun.

For those who were enlightened by the above, read the FAQ at
http://www.c-faq.com as well. It covers the above and much more.

S.
 
M

Maxim Yegorushkin

Måns Rullgård said:
The format for "long long" is %lld (or %llx etc.). Keep in mind
though, that a long long is not necessarily 64 bits.

It is at least 64 bits to be precise.

The New C Standard by Derek M. Jones
<q>
The C compiler for the Unisys e-@ction Application Development
Solutions (formerly known as the Universal Compiling System, UCS)[1331]
has 9-bit character types- 18-bit short, 36-bit int and long, and
72-bit long long.
</q>
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,014
Latest member
BiancaFix3

Latest Threads

Top