## The Question :

*362 people think this question is useful*

I can never understand how to print `unsigned long`

datatype in C.

Suppose `unsigned_foo`

is an `unsigned long`

, then I try:

`printf("%lu\n", unsigned_foo)`

`printf("%du\n", unsigned_foo)`

`printf("%ud\n", unsigned_foo)`

`printf("%ll\n", unsigned_foo)`

`printf("%ld\n", unsigned_foo)`

`printf("%dl\n", unsigned_foo)`

And all of them print some kind of `-123123123`

number instead of `unsigned long`

that I have.

*The Question Comments :*

## The Answer 1

*527 people think this answer is useful*

`%lu`

is the correct format for `unsigned long`

. Sounds like there are other issues at play here, such as memory corruption or an uninitialized variable. Perhaps show us a larger picture?

## The Answer 2

*33 people think this answer is useful*

`%lu`

for **unsigned long**
`%llu`

for **unsigned long long**

## The Answer 3

*30 people think this answer is useful*

For **int** `%d`

For **long int** `%ld`

For **long long int** `%lld`

For **unsigned long long int** `%llu`

## The Answer 4

*23 people think this answer is useful*

Out of all the combinations you tried, `%ld`

and `%lu`

are the only ones which are valid printf format specifiers at all. `%lu`

(long unsigned decimal), `%lx`

or `%lX`

(long hex with lowercase or uppercase letters), and `%lo`

(long octal) are the only valid format specifiers for a variable of type unsigned long (of course you can add field width, precision, etc modifiers between the `%`

and the `l`

).

## The Answer 5

*9 people think this answer is useful*

int main()
{
unsigned long long d;
scanf("%llu",&d);
printf("%llu",d);
getch();
}

This will be helpful . . .

## The Answer 6

*9 people think this answer is useful*

The format is `%lu`

.

Please check about the various other datatypes and their usage in printf here

## The Answer 7

*8 people think this answer is useful*

The correct specifier for unsigned long is `%lu`

.

If you are not getting the exact value you are expecting then there may be some problems in your code.

Please copy your code here. Then maybe someone can tell you better what the problem is.