To add to what Jon correctly says, integers have a fixed size, which these days is 32 bits or 4 bytes, giving a range of possible values between -2,147,483,648 to 2,147,483,647 because computers work with fixed length binary numbers.
If you want to calculate really big numbers, you will need to do all the arithmetic yourself, by creating numbers that can hold a ridiculous number of digits.
On of the ways is to use a byte per digit, and store them in an array. even then, you run into problems as the largest number of bytes you can dynamically allocate in C is 16711568 bytes while you could fit 45881! in, you will still run out of digits pretty soon.
If you do decide to go that way, you will have to implement multiplication for yourself, using long multiplication:
123 * 23 =
123
* 23
----
2460
+ 369
----
=2829
----
That's not impossible, but it's going to get quite involved, and to be honest C isn't the best language to start doing it with (though it can be done using a
struct
Be a nice little project though...