Range (computer programming)
In computer science, the term range may refer to one of three things:
01Range of a variable
The range of a variable is given as the set of possible values that that variable can hold. In the case of an integer, the variable definition is restricted to whole numbers only, and the range will cover every number within its range (including the maximum and minimum). For example, the range of a signed 16-bit integer variable is all the integers from −32,768 to +32,767.

02Range of an array
When an array is numerically indexed, its range is the upper and lower bound of the array. Depending on the environment, a warning, a fatal exception, or unpredictable behavior will occur if the program attempts to access an array element that is outside the range. In some programming languages, such as C, arrays have a fixed lower bound (zero) and will contain data at each position up to the upper bound (so an array with 5 elements will have a range of 0 to 4). In others, such as PHP, an array may have holes where no element is defined, and therefore an array with a range of 0 to 4 will have up to 5 elements (and a minimum of 2).
03Range as an alternative to iterator
Another meaning of range in computer science is an alternative to iterator. When used in this sense, range is defined as "a pair of begin/end iterators packed together". It is argued that "Ranges are a superior abstraction" (compared to iterators) for several reasons, including better safety.
In particular, such ranges are supported in C++20, Boost C++ Libraries and the D standard library.
04Range as a data type
A data type for ranges can be implemented using generics.
Example in C#.
public record Range<T>(T Start, T End) where T : IComparable;Example in Kotlin.
data class Range<T: Comparable<T>>(val start: T, val end: T)Example in PHP.
readonly class Range<T> { public function __construct( public T $start, public T $end, ) {} }Example in Python.
from dataclasses import dataclass @dataclass class Range[T]: start: T end: TRust has a built-in range struct in the standard library in std::ops::Range. C++ has a std::ranges library as well since C++20.
05Range as a operator
Rust has the .. and ..= operators.
let heartwarming = "heartwarming!".to_string(); let warm = &heartwarming[5..9];Zig also has the .. operator.
// To iterate over consecutive integers, use the range syntax. var sum: usize = 0; for (0..5) |i| { sum += i; }As does C#,
string[] items = ["one","two","three","four"]; string[] firstThreeItems = items[0..2];F#,
[1..4] // Outputs: [1; 2; 3; 4] for (i in 1..5) print(i)and Perl.
for( 1..5) { print }Python and PHP does not have any range operator but they do have a range function.
Sources and credits
This article is adapted from the Wikipedia article “Range (computer programming)”, written by its contributors and licensed under CC BY-SA 4.0. Fathomly has changed the layout, removed citation markers, navigation and maintenance notices, and adjusted punctuation. This adapted version is shared under the same license. For references, see the original article.
Images, from Wikimedia Commons:
- Range UML class.svg by Frap, CC0
Fathomly is not affiliated with or endorsed by the Wikimedia Foundation. Spotted a problem? Tell us.