🔥Limited Offer: Get 50% OFFon AI & Full Stack Courses🔥
Back to C Notes
Topic #98

C Fixed-width Integers


Fixed-Width Integers

In C, the size of int, short, and long types can vary depending on your computer and system. For example, an int might take up 2 bytes on one system, and 4 bytes on another.

To make programs behave the same everywhere, C provides fixed-width integer types in the <stdint.h> header. These types always have the same size (number of bits), no matter which computer you are on.

The most common fixed-width types are:

Type Size Range Printf Specifier
int8_t 8 bits (1 byte) -128 to 127 %d
uint8_t 8 bits (1 byte) 0 to 255 %u
int16_t 16 bits (2 bytes) -32,768 to 32,767 %d
uint16_t 16 bits (2 bytes) 0 to 65,535 %u
int32_t 32 bits (4 bytes) -2,147,483,648 to 2,147,483,647 %d
uint32_t 32 bits (4 bytes) 0 to 4,294,967,295 %u
int64_t 64 bits (8 bytes) -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 %lld
uint64_t 64 bits (8 bytes) 0 to 18,446,744,073,709,551,615 %llu

The letter u stands for unsigned, which means the type can only store non-negative values (0 and up). This doubles the maximum positive value compared to the signed version, but you lose the ability to store negative numbers.


Using Fixed-Width Integers

Example

#include <stdio.h>
#include <stdint.h>  // needed for fixed-width integers

int main() {
  int8_t a = 100;        // 8-bit integer
  int16_t b = 30000;     // 16-bit integer
  int32_t c = 2000000;   // 32-bit integer
  int64_t d = 9000000000; // 64-bit integer

  printf("%d\n", a);
  printf("%d\n", b);
  printf("%d\n", c);
  printf("%lld\n", d); // use %lld for 64-bit
  return 0;
}

When to Use Fixed-Width Integers?

For most everyday programs, you don't need these types - a normal int is usually fine.

But fixed-width integers are essential when:

  • You are writing embedded systems (programs for small devices, like microcontrollers).
  • You are working with file formats where exact sizes matter.
  • You are sending data across networks and need consistent results on different machines.

Real Life Example

Imagine you are building a program that shows the battery level of a device. Since the battery percentage will always be between 0 and 100, you don't need a large type like int. Instead, you can use uint8_t, which is exactly 1 byte (8 bits) and can store values from 0 to 255:

Example

#include <stdio.h>
#include <stdint.h>

int main() {
  uint8_t battery = 87; // battery level percentage

  printf("Battery level is %u out of 100\n", battery);

  return 0;
}

Here we save memory by using a uint8_t, which is perfect for storing values in a small, well-defined range like a battery percentage.

Want to go beyond the notes?

Join CodingNow 2.0's C course — live mentorship, real projects, and 100% placement support.

Enroll Now — Free Demo Available

C Fixed-width Integers – FAQs

Quick answers about learning C Fixed-width Integers in C.

This free note from CodingNow 2.0 explains C Fixed-width Integers in C — concept, syntax and worked code examples you can copy, run and revise before interviews.
Yes. Every C topic on CodingNow 2.0, including C Fixed-width Integers, is 100% free with no signup required.
With focused practice, most students grasp C Fixed-width Integers in 1–3 days from these notes; pairing it with CodingNow 2.0's mentor-led course takes you to job-ready depth faster.
Use the code examples in this note, then ask doubts for free on the CodingNow 2.0 Community (/community) — expert instructors answer within 24 hours.
WhatsApp
Call NowEnroll Now