ccompiler.inOnline C Compiler & Docs
C Example Code2026-03-202 min read

Reverse an integer in C with full source code, step-by-step logic, negative number handling, and integer overflow protection explained.

Problem Statement & Arithmetic Logic

Reversing an integer means reversing the order of its digits. For example:

  • Input: 12345 $→$ Output: 54321
  • Input: -987 $→$ Output: -789

Algorithm:

  1. Extract the last digit: rem = num % 10
  2. Multiply accumulated reversed number by 10 and add remainder: reversed = (reversed * 10) + rem
  3. Discard the last digit: num = num / 10
  4. Repeat until num == 0.

Working C Code

c (ISO Standard)
#include <stdio.h>
#include <limits.h>
#include <stdbool.h>

bool reverseInteger(int n, int *result) {
    long long reversed = 0;
    int sign = (n < 0) ? -1 : 1;
    long long temp = (n < 0) ? -(long long)n : n;

    while (temp > 0) {
        int rem = temp % 10;
        reversed = (reversed * 10) + rem;
        temp /= 10;
    }

    reversed *= sign;

    /* Check for 32-bit signed integer overflow */
    if (reversed < INT_MIN || reversed > INT_MAX) {
        return false; /* Overflow occurred */
    }

    *result = (int)reversed;
    return true;
}

int main() {
    int numbers[] = {12345, -987, 1000, 1534236469};
    int count = sizeof(numbers) / sizeof(numbers[0]);

    for (int i = 0; i < count; i++) {
        int num = numbers[i];
        int reversedValue;
        if (reverseInteger(num, &reversedValue)) {
            printf("Original: %12d  | Reversed: %12d\n", num, reversedValue);
        } else {
            printf("Original: %12d  | Reversed: OVERFLOW (exceeds 32-bit int)\n", num);
        }
    }

    return 0;
}

Sample Output

text (ISO Standard)
Original:        12345  | Reversed:        54321
Original:         -987  | Reversed:         -789
Original:         1000  | Reversed:            1
Original:   1534236469  | Reversed: OVERFLOW (exceeds 32-bit int)

Complexity Analysis

  • Time Complexity: O(log₁₀ n) — Proportional to the number of decimal digits in n.
  • Auxiliary Space: O(1) — No dynamic allocations.

Related C Examples & Tutorials