Menu
×
   ❮   
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS DSA TYPESCRIPT ANGULAR ANGULARJS GIT POSTGRESQL MONGODB ASP AI R GO KOTLIN SASS VUE GEN AI SCIPY CYBERSECURITY DATA SCIENCE INTRO TO PROGRAMMING BASH RUST

C Tutorial

C HOME C Intro C Get Started C Syntax C Output C Comments C Variables C Data Types C Constants C Operators C Booleans C If...Else C Switch C While Loop C For Loop C Break/Continue C Arrays C Strings C User Input C Memory Address C Pointers

C Functions

C Functions C Function Parameters C Scope C Function Declaration C Recursion C Math Functions

C Files

C Create Files C Write To Files C Read Files

C Structures

C Structures C Nested Structures C Structs & Pointers C Unions C typedef

C Enums

C Enums

C Memory

C Memory Management

C Errors

C Errors C Debugging C NULL C Error Handling C Input Validation

C More

C Date C Random Numbers C Macros C Organize Code C Storage Classes C Bitwise Operators C Fixed Width Integers

C Projects

C Projects

C Reference

C Reference C Keywords C <stdio.h> C <stdlib.h> C <string.h> C <math.h> C <ctype.h> C <time.h>

C Examples

C Examples C Real-Life Examples C Exercises C Quiz C Compiler C Syllabus C Study Plan C Certificate

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;
}

Try it Yourself »


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;
}

Try it Yourself »

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.



×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
sales@w3schools.com

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
help@w3schools.com

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2025 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.