The underscore is a character that originally appeared on the typewriter and was primarily
used to underline words.
To produce an underlined word, the word was typed, the typewriter carriage was moved back
to the beginning of the word, and the word was overtyped with the underscore character.
This character is sometimes used to create visual spacing within a sequence of characters,
where a whitespace character is not permitted, e.g., in computer filenames, email addresses,
and in Internet URLs.
Some computer applications will automatically underline text surrounded by underscores:
_underlined_ will render underlined.
It is often used in plain text-only media for this purpose.
When the underscore is used for emphasis in this fashion, it is usually interpreted as
indicating that the enclosed text is underlined or italicized.
The underscore is not the same character as the dash character, although one convention
for text news wires is to use an underscore when an em-dash or en-dash is desired, or
when other non-standard characters such as bullets would be appropriate.
A series of underscores may be used to create a blank to be filled in on a form, although
the resulting blank may have tiny gaps between each individual underscore.
It is also sometimes used to create a horizontal line; other symbols with similar graphemes,
such as hyphens and dashes, are also used for this purpose.
Unicode encoding and typing In Unicode, the character is encoded at U+005F
_ low line.
The ASCII value of this character is 95.
On the standard US or UK 101/102 computer keyboard it shares a key with the hyphen-minus (-)
on the top row, to the right of the 0 key.
A similar Unicode character is U+2017 ‗ double low line, which is an underscore with two
horizontal lines instead of one.
Diacritic
The underscore is used as a diacritic mark, "combining low line", in some Egyptian languages,
some languages using the Rapidolangue orthography in Gabon, Izere in Nigeria, and Native American
languages such as Shoshoni and Kiowa.
It is distinct from the combining macron below, another diacritic.
Usage in computing Multi-word identifiers
In computer programming, descriptive identifiers, like "previous balance" or "end of file",
are convenient.
However, spaces are not typically permitted inside identifiers, as they are treated as
delimiters between tokens.
Writing the words together as in "endoffile" is not satisfactory because the names often
become unreadable.
Therefore, the programming language COBOL allowed a hyphen-minus to be used between
words of compound identifiers, as in "END-OF-FILE".
LISP also allowed the "-" symbol in names, treating the subtraction operator as an identifier.
Most programming languages, however, consider the hyphen-minus symbol as an operator and
do not allow it in identifier names.
History The common punched card character sets of
the early 1960s had no lower-case letters and no special character that would be adequate
as a word separator in identifiers.
IBM's EBCDIC character coding system, introduced in 1964 at the same time as the IBM System/360
computer series, uses 8 bits per byte.
A modest increase in the character set size over earlier character sets added a few punctuation
characters, including the underscore, which IBM referred to as the break character, but
not lower case.
IBM's report on NPL leaves the character set undefined, but specifically mentions the break
character, and gives RATE_OF_PAY as an example identifier.
By 1967, the underscore had spread to ASCII, replacing the similarly shaped left-arrow
character previously residing at code point 95 in ASCII-1963.
C, developed at Bell Labs in the early 1970s, allowed the underscore as an alphabetic character.
Programming conventions A common programming convention is to use
a leading underscore in a name to indicate that the name is intended for internal use
within a library or a header file and does not appear in an API.
Ruby and Perl use $_ as a special variable described as the “default input and pattern
matching space” — any output defaults to that variable, and may be omitted.
In Perl, @_ is a special array variable that holds the arguments to a function.
In some languages with pattern matching, such as Standard ML, OCaml, and Haskell, the pattern
_ matches any value, but does not perform binding.
In the interactive Python interpreter, the special variable _ holds the result of the
previous evaluation.
"PHP reserves all function names starting with __ as magical."
See also Overline
Strikethrough Underline
Undertie References