C long Data Type

In C, the long data type is an extended version of int that allows storing larger integer values. It is useful when working with numbers that exceed the range of int. The long type supports both positive and negative whole numbers.


1. Storage Size of long Data Type

The storage size of long depends on the system and compiler. Typically:

  • On most 32-bit systemslong is 4 bytes (32 bits).
  • On most 64-bit systems (Linux/macOS – LP64 model)long is 8 bytes (64 bits).
  • On Windows (LLP64 model)long is still 4 bytes, even on 64-bit systems.

2. Values Stored by long Data Type

The long data type is used to store large whole numbers, including both positive and negative values.

Example values that can be stored in long:

100000, -500000, 2147483647, -2147483648

3. Example: Declaring and Using long Variables

Let’s see a simple program demonstrating how to declare and use long variables in C.

main.c

</>
Copy
#include <stdio.h>

int main() {
    long num1 = 50000;
    long num2 = -200000;
    long sum = num1 + num2;

    printf("Number 1: %ld\n", num1);
    printf("Number 2: %ld\n", num2);
    printf("Sum: %ld\n", sum);

    return 0;
}

Explanation:

  1. We declare three long variables: num1, num2, and sum.
  2. We assign values 50000 and -200000 to num1 and num2 respectively.
  3. The sum of these two numbers is stored in the sum variable.
  4. We print the values using printf() with the format specifier %ld.

Output:

Number 1: 50000
Number 2: -200000
Sum: -150000

4. Checking Storage Size of long Programmatically

We can determine the storage size of long in bytes using the sizeof operator.

main.c

</>
Copy
#include <stdio.h>

int main() {
    printf("Size of long: %lu bytes\n", sizeof(long));
    return 0;
}

Output (varies based on system architecture):

Size of long: 8 bytes

5. Minimum and Maximum Values of long

The range of values a long can store depends on its size:

Storage SizeMinimum ValueMaximum Value
4 bytes-2,147,483,6482,147,483,647
8 bytes-9,223,372,036,854,775,8089,223,372,036,854,775,807

6. Getting Maximum and Minimum Values of long Programmatically

The maximum and minimum values of a long can be retrieved using limits.h.

main.c

</>
Copy
#include <stdio.h>
#include <limits.h>

int main() {
    printf("Minimum long value: %ld\n", LONG_MIN);
    printf("Maximum long value: %ld\n", LONG_MAX);
    return 0;
}

Output:

Minimum long value: -9223372036854775808
Maximum long value: 9223372036854775807

Conclusion

In this tutorial, we explored the long data type in C, including:

  1. Its ability to store larger whole numbers (both positive and negative).
  2. Its typical storage size of 4 or 8 bytes, depending on the system.
  3. How to get the storage size programmatically using sizeof().
  4. The minimum and maximum values that long can store.
  5. How to retrieve these values using limits.h.