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:
- Extract the last digit:
rem = num % 10 - Multiply accumulated reversed number by 10 and add remainder:
reversed = (reversed * 10) + rem - Discard the last digit:
num = num / 10 - 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 Programs
- Verify string and integer symmetry in Palindrome Program in C.
- Master call-by-reference pointers in Pointers in C.