Управляющие символы юникода что это
Управляющие символы
Управля́ющие си́мволы — элементы данной кодировки, которым не приписано графическое представление, но которые используются для управления устройствами, организации передачи данных и других целей.
Сейчас для этих целей применяются форматы файлов, языки управления устройствами (такие как Postscript) и сетевые протоколы. Поэтому многие управляющие символы сейчас или не используются вообще, или используются не по назначению.
Стандарт POSIX требует обязательного наличия лишь восьми управляющих символов — \0, \a, \b, \t, \n, \v, \f, \r (см. переносимый набор символов).
Управляющие символы ASCII
Номер | Английское название | Русское название | Соче- тание кла- виш | Escape после- дова- тель- ность | Назначение |
---|---|---|---|---|---|
00 | NULL | пустой символ | \0 | Этот символ ничего не делает. Некоторые терминалы изображают его как пробел, но это неправильно. Часто NULL используют для обозначения конца цепочки символов (например, в языке C). | |
01 | START OF HEADING | начало заголовка | ^A | В настоящее время используется в консоли маршрутизаторов Cisco. | |
02 | START OF TEXT | начало текста | ^B | В настоящее время используется в консоли маршрутизаторов Cisco. | |
03 | END OF TEXT | конец текста | ^C | При вводе на терминале обычно интерпретируется как сигнал прерывания. | |
04 | END OF TRANSMISSION | конец передачи | ^D | При вводе на терминале в UNIX-системах интерпретируется как конец вводимых данных. Если текущая программа брала данные с терминала, то она завершается, как только обработает всё, что было до символа ^D. | |
05 | ENQUIRY | запрос | ^E | Использовался в телетайпной связи. В ответ предполагалось получить идентификационную строку удалённого аппарата. | |
06 | ACKNOWLEDGE | подтверждение | ^F | Использовался в телетайпной связи. | |
07 | BELL | звуковой сигнал | ^G | \a | Если этот символ послать на принтер или на терминал, то ничего не напечатается, но послышится звуковой сигнал. |
08 | BACKSPACE | возврат на шаг | ^H | \b | Перемещает позицию печати на один символ назад. На принтерах может использоваться для наложения одного символа на другой, например a BS ^ = â. При вводе с терминала иногда используется для стирания предшествующего символа («забой»). |
09 | CHARACTER TABULATION (horizontal tabulation) | горизонтальная табуляция | ^I | \t | Перемещает позицию печати к следующей позиции горизонтальной табуляции. |
0A | LINE FEED | перевод строки | ^J | \n | Перемещает позицию печати на одну строку вниз. В текстовых файлах в Unix разделяет строки. |
0B | LINE TABULATION (vertical tabulation) | вертикальная табуляция | ^K | \v | Перемещает позицию печати к следующей позиции вертикальной табуляции. На терминалах этот символ обычно эквивалентен переводу строки. |
0C | FORM FEED | прогон страницы, смена страницы | ^L | \f | Выбрасывает текущую страницу и начинает печать со следующей. На терминалах этот символ обычно эквивалентен переводу строки (хотя в принципе можно было бы его использовать для очистки экрана). |
0D | CARRIAGE RETURN | возврат каретки | ^M | \r | Перемещает позицию печати в крайнее левое положение. В текстовых файлах в Mac OS (но не Mac OS X) разделяет строки. В CP/M, MS-DOS и Microsoft Windows для разделения строк в текстовых файлах используется сочетание символов \r\n. |
0E | SHIFT OUT (locking-shift one) | режим национальных символов | ^N | В КОИ-7 включает русский режим. На некоторых принтерах включает режим символов двойной ширины. | |
0F | SHIFT IN (locking-shift zero) | режим обычного ASCII | ^O | В КОИ-7 включает латинский режим. На некоторых принтерах включает режим узких символов. | |
10 | DATA LINK ESCAPE | освобождение канала данных | ^P | Означает, что следующий за ним управляющий символ должен восприниматься как данные, а не как управляющий символ. | |
11 | DEVICE CONTROL ONE | 1-й код управления устройством | ^Q | На терминалах разрешает продолжить вывод данных. | |
12 | DEVICE CONTROL TWO | 2-й код управления устройством | ^R | ||
13 | DEVICE CONTROL THREE | 3-й код управления устройством | ^S | На терминалах временно прерывает (приостанавливает) вывод данных. | |
14 | DEVICE CONTROL FOUR | 4-й код управления устройством | ^T | ||
15 | NEGATIVE ACKNOWLEDGE | отрицательное подтверждение | ^U | Использовался в телетайпной связи. | |
16 | SYNCHRONOUS IDLE | пустой символ для синхронного режима передачи | ^V | Некоторые линии связи устроены так, что требуют непрерывной передачи данных. Если передавать нечего, то передают этот символ. | |
17 | END TRANSMISSION BLOCK | конец блока передаваемых данных | ^W | ||
18 | CANCEL | отмена | ^X | Данные, которые идут перед ним, некорректны. (Обычно речь идёт об одной строке.) | |
19 | END OF MEDIUM | конец носителя | ^Y | Использовался, напр., если закончилась перфолента и т.п. | |
1A | SUBSTITUTE | символ замены | ^Z | Ставится на месте символов, значения которых были потеряны при передаче. В CP/M и MS-DOS использовался для обозначения конца текстовых файлов и конца вводимых с консоли данных (хотя для этого были предназначены символы ^C и ^D). Некоторые текстовые редакторы под DOS автоматически добавляли в конце файла ^Z. | |
1B | ESCAPE | Альтернативный регистр №2 (АР2) | ^[ | Означает, что следующие за ним символы имеют какое-то другое значение, отличное от того, которое определено в ASCII. Обычно начинает управляющие последовательности. | |
1C | INFORMATION SEPARATOR FOUR (file separator) | разделитель данных № 4 (разделитель файлов) | ^\ | ||
1D | INFORMATION SEPARATOR THREE (group separator) | разделитель данных № 3 (разделитель групп) | ^] | ||
1E | INFORMATION SEPARATOR TWO (record separator) | разделитель данных № 2 (разделитель записей) | ^^ | Видимо, предназначался для разделения записей в базах данных, но практически никогда не используется для этого. | |
1F | INFORMATION SEPARATOR ONE (unit separator) | разделитель данных № 1 (разделитель полей) | ^_ | Видимо, предназначался для разделения полей в базах данных, но практически никогда не используется для этого. | |
7F | DELETE | удаление | ^? | Предназначен для забивания ошибочно пробитых символов на семидорожечных перфолентах (поскольку обозначается пробитием дырочек во всех дорожках), поэтому там он эквивалентен пустому символу (\0). На терминалах может генерироваться нажатием либо кнопки Backspace, либо кнопки Delete. |
Управляющие символы ISO 8859
80, PADDING CHARACTER, символ-заполнитель.
82, BREAK PERMITTED HERE, здесь разрешён разрыв строки.
83, NO BREAK HERE, здесь не разрешён разрыв строки.
85, NEXT LINE, следующая строка. Одновременно переводит строку и возвращает позицию печати к началу строки (эквивалентно \r\n).
86, START OF SELECTED AREA, начало выделенной области.
87, END OF SELECTED AREA, конец выделенной области.
88, CHARACTER TABULATION SET, установка позиций горизонтальной табуляции.
89, CHARACTER TABULATION WITH JUSTIFICATION, установка позиций и выравнивания горизонтальной табуляции.
8A, LINE TABULATION SET, установка позиций вертикальной табуляции.
8B, PARTIAL LINE FORWARD, частичный перевод строки вперёд.
8С, PARTIAL LINE BACKWARD, частичный перевод строки назад.
8D, REVERSE LINE FEED, обратный перевод строки.
8E, SINGLE SHIFT TWO, 2-e значение для следующего символа.
8F, SINGLE SHIFT THREE, 3-e значение для следующего символа.
90, DEVICE CONTROL STRING, строка управления устройством.
91, PRIVATE USE ONE, пользовательский символ № 1.
92, PRIVATE USE TWO, пользовательский символ № 2.
93, SET TRANSMIT STATE, установка режима передачи.
94, CANCEL CHARACTER, символ отмены.
95, MESSAGE WAITING, есть сообщение.
96, START OF GUARDED AREA, начало защищённой области.
97, END OF GUARDED AREA, конец защищённой области.
98, START OF STRING, начало строки.
99, SINGLE GRAPHIC CHARACTER INTRODUCER, следующий символ интерпретируется как специальный графический.
9A, SINGLE CHARACTER INTRODUCER, следующий символ интерпретируется как управляющий.
9B, CONTROL SEQUENCE INTRODUCER, начало управляющей последовательности. Обычно этот символ эквивалентен Escape+[.
9C, STRING TERMINATOR, окончание строки.
9D, OPERATING SYSTEM COMMAND, команда операционной системы.
9E, PRIVACY MESSAGE, секретное сообщение.
9F, APPLICATION PROGRAM COMMAND, команда прикладной программы.
Управляющие символы Unicode
034F, COMBINING GRAPHEME JOINER. Объединить символы, стоящие слева и справа (создать лигатуру).
200B, ZERO-WIDTH SPACE, пробел нулевой ширины. При выравнивании по ширине может расширяться.
200C, ZERO WIDTH NON-JOINER. Запрещает образование лигатур.
200D, ZERO WIDTH JOINER. Разрешает образование лигатур.
200E, LEFT-TO-RIGHT MARK. Писать слева направо.
200F, RIGHT-TO-LEFT MARK. Писать справа налево.
2028, LINE SEPARATOR, разделитель строк. Разделяет строки текста, но не абзацы.
2029, PARAGRAPH SEPARATOR, разделитель абзацев. Разделяет абзацы текста.
202A, LEFT-TO-RIGHT EMBEDDING. Начало текста, написанного слева направо, внутри текста, написанного справа налево.
202B, RIGHT-TO-LEFT EMBEDDING. Начало текста, написанного справа налево, внутри текста, написанного слева направо.
202C, POP DIRECTIONAL FORMATTING. Конец вставленного текста с другим направлением.
202D, LEFT-TO-RIGHT OVERRIDE. Заменить текст, написанный слева направа, текстом, написанным справа налево.
202E, RIGHT-TO-LEFT OVERRIDE. Заменить текст, написанный справа налево, текстом, написанным слева направо.
2060, WORD JOINER, соединитель слов.
FE01 … FE0F, VARIATION SELECTOR-1…16, выбор варианта начертания № 1 … № 16.
FEFF, ZERO WIDTH NO-BREAK SPACE / BYTE ORDER MARK, неразрывный пробел нулевой ширины / индикатор порядка байтов. Этот символ используется для указания того, что данный файл записан в UTF-16 или UTF-32 с определённым порядком байтов (поскольку символа FFFE нет, а в UTF-8 байты FE и FF не используются). Использование этого символа в качестве неразрывного пробела нулевой ширины не рекомендуется; для этого есть символ U+2060 (word joiner).
FFFD, REPLACEMENT CHARACTER, заменяющий символ. Используется, когда значение символа неизвестно или не может быть выражено в Уникоде (см. также символ 1A).
E0100 … E01EF, VARIATION SELECTOR-17…256, выбор варианта начертания № 17 … № 256.
Кодировки символов | |||
---|---|---|---|
Основы → | алфавит • текст ( файл • данные ) • набор символов • конверсия | ||
Исторические кодировки → | Докомп.: семафорная (Макарова) • Морзе • Бодо • МТК-2 | Комп.: 6 бит • УПП • RADIX-50 • EBCDIC ( ДКОИ-8 ) • КОИ-7 • ISO 646 | |
совре- менное 8-битное представ- ление | символы → | ASCII ( управляющие • печатные ) | не-ASCII ( псевдографика ) |
8бит. код.стр. | Разные → Кириллица: КОИ-8 • ГОСТ 19768-87 • MacCyrillic | ||
ISO 8859 → | 1(лат.) 2 3 4 5(кир.) 6 7 8 9 10 11 12 13 14 15(€) 16 | ||
Windows → | 1250 1251(кир.) 1252 1253 1254 1255 1256 1257 1258 | WGL4 | ||
IBM&DOS → | 437 • 850 • 852 • 855 • 866 «альт.» • ( МИК ) • ( НИИ ЭВМ ) | ||
Много- байтные | Традиционные → | DBCS ( GB2312 ) • HTML | |
Unicode → | UTF-16 • UTF-8 • список символов ( кириллица ) | ||
Связанные темы → | интерфейс пользователя • раскладка клавиатуры • локаль • перевод строки • шрифт • кракозябры • транслит • нестандартные шрифты • текст как изображение | Утилиты: iconv • recode |
Полезное
Смотреть что такое «Управляющие символы» в других словарях:
управляющие символы — В коммуникациях любые дополнительные символы, используемые для управления передачей или ее облегчения (например, символы, связанные с опросом, кадрированием, синхронизацией, контролем ошибок и т.п.). [http://www.lexikon.ru/dict/net/index.html]… … Справочник технического переводчика
управляющие символы ФОРТРАНа — — [http://slovarionline.ru/anglo russkiy slovar neftegazovoy promyishlennosti/] Тематики нефтегазовая промышленность EN Fortran control characters … Справочник технического переводчика
Управляющие последовательности ANSI — У этого термина существуют и другие значения, см. ANSI (значения). Управляющие символы ANSI (англ. ANSI escape code) символы, встраиваемые в текс … Википедия
Управляющие знаки — Управляющие символы элементы данной кодировки, которым не приписано графическое представление, но которые используются для управления устройствами, организации передачи данных и других целей. Сейчас для этих целей применяются форматы файлов,… … Википедия
Символы, представленные в Юникоде — В Юникоде зарезервировано 1 112 064 (= 220 + 216 − 211) позиций символов, из которых сейчас используется свыше 100 000. Первые 256 знакомест совпадают с кодовой таблицей ISO 8859 1 («Латиница 1»). Кодовое… … Википедия
Представленные в Юникоде Символы — В Юникоде зарезервировано 1 114 112 (= 220 + 216) позиций символов, из которых сейчас используется свыше 100 000. Первые 256 знакомест совпадают с кодовой таблицей ISO 8859 1 («Латиница 1»). Кодовое пространство разделено на 17 «плоскостей» по… … Википедия
ГОСТ Р ИСО 22742-2006: Автоматическая идентификация. Кодирование штриховое. Символы линейного штрихового кода и двумерные символы на упаковке продукции — Терминология ГОСТ Р ИСО 22742 2006: Автоматическая идентификация. Кодирование штриховое. Символы линейного штрихового кода и двумерные символы на упаковке продукции оригинал документа: 3.8 Data Matrix : Двумерная матричная символика с коррекцией… … Словарь-справочник терминов нормативно-технической документации
Печатные символы — Печатные символы элементы набора символов, имеющие графическое представление, например в виде значка на бумаге или определённого рисунка на экране. Примерами печатных символов являются буквы, цифры, знаки препинания и псевдографические… … Википедия
Псевдографические символы — Псевдографика общее название символов, которые предназначены не для записи текста на каком либо языке, а для графического оформления интерфейса пользователя например, для рисования рамочек и таблиц. Псевдографика широко используется программами… … Википедия
ASCII — У этого термина существуют и другие значения, см. ASCII (значения). ASCII ASCII (англ. American Standard Code for Information … Википедия
Управляющие последовательности символов Юникода
Управляющая последовательность символов Юникода представляет собой символ Юникода. Управляющие последовательности символов Юникода обрабатываются в идентификаторах (§2.4.2), символьных литералах (§2.4.4.4) и правильных строковых литералах (§2.4.4.5). Управляющая последовательность символов Юникода не обрабатывается в других местах (например, для образования оператора, знака пунктуации или ключевого слова).
unicode-escape-sequence:
\u hex-digit hex-digit hex-digit hex-digit
\U hex-digit hex-digit hex-digit hex-digit hex-digit hex-digit hex-digit hex-digit
Управляющая последовательность Юникода (escape-последовательность Юникода) представляет собой один символ Юникода, образованный шестнадцатеричным числом, следующим за символами «\u» или «\U». Поскольку в C# используется 16-разрядная кодировка элементов кода Юникода в символьных и строковых значениях, символ Юникода в диапазоне от U+10000 до U+10FFFF запрещен в строковом литерале и представляется с помощью суррогатной пары Юникода в строковом литерале. Символы Юникода с элементами кода выше 0x10FFFF не поддерживаются.
Многократные трансляции не выполняются. Например, строковый литерал «\u005Cu005C» эквивалентен «\u005C», а не «\». Значение Юникода \u005C является символом «\».
class Class1
<
static void Test(bool \u0066) <
char c = ‘\u0066’;
if (\u0066)
System.Console.WriteLine(c.ToString());
>
>
показано несколько использований \u0066, escape-последовательности для буквы «f». Эта программа эквивалентна следующей:
class Class1
<
static void Test(bool f) <
char c = ‘f’;
if (f)
System.Console.WriteLine(c.ToString());
>
>
Идентификаторы
Правила для идентификаторов в этом разделе точно соответствуют правилам, рекомендованным в дополнении 31 к стандарту Юникода, за исключением следующего: знак подчеркивания разрешен в качестве начального символа (что традиционно для языка программирования C), escape-последовательности Юникода разрешены в идентификаторах, а символ «@» разрешен в качестве префикса, чтобы можно было использовать ключевые слова в качестве идентификаторов.
identifier:
available-identifier
@ identifier-or-keyword
available-identifier:
An identifier-or-keyword that is not a keyword
identifier-or-keyword:
identifier-start-character identifier-part-charactersopt
identifier-start-character:
letter-character
_ (the underscore character U+005F)
identifier-part-characters:
identifier-part-character
identifier-part-characters identifier-part-character
identifier-part-character:
letter-character
decimal-digit-character
connecting-character
combining-character
formatting-character
letter-character:
A Unicode character of classes Lu, Ll, Lt, Lm, Lo, or Nl
A unicode-escape-sequence representing a character of classes Lu, Ll, Lt, Lm, Lo, or Nl
combining-character:
A Unicode character of classes Mn or Mc
A unicode-escape-sequence representing a character of classes Mn or Mc
decimal-digit-character:
A Unicode character of the class Nd
A unicode-escape-sequence representing a character of the class Nd
connecting-character:
A Unicode character of the class Pc
A unicode-escape-sequence representing a character of the class Pc
formatting-character:
A Unicode character of the class Cf
A unicode-escape-sequence representing a character of the class Cf
Дополнительные сведения об упомянутых выше классах символов Юникода см. в документе Стандарт Юникода, версия 3.0, раздел 4.5.
Примеры допустимых идентификаторов: «identifier1», «_identifier2» и «@if».
Идентификатор в соответствующей программе должен быть в каноническом формате, определенном формой нормализации C Юникода, как определено в дополнении 15 к стандарту Юникода. Поведение при обнаружении идентификатора не в форме нормализации C определяется реализацией, однако диагностика при этом не требуется.
Префикс «@» позволяет использовать ключевые слова в качестве идентификаторов, что полезно при взаимодействии с другими языками программирования. Символ @ фактически не является частью идентификатора, так что этот идентификатор может отображаться в других языках в виде обычного идентификатора, без префикса. Идентификатор с префиксом @ называется буквальным идентификатором. Использование префикса @ для идентификаторов, не являющихся ключевыми словами, разрешено, но настоятельно не рекомендуется со стилистической точки зрения.
class @class
<
public static void @static(bool @bool) <
if (@bool)
System.Console.WriteLine(«true»);
else
System.Console.WriteLine(«false»);
>
>
class Class1
<
static void M() <
cl\u0061ss.st\u0061tic(true);
>
>
определяется класс class со статическим методом с именем static, который принимает параметр с именем bool. Обратите внимание, что, поскольку управляющие последовательности Юникода не разрешены в ключевых словах, лексема «cl\u0061ss» является идентификатором, причем тем же идентификатором, что и «@class».
Два идентификатора считаются одинаковыми, если они идентичны после применения следующих преобразований в таком порядке:
· если используется префикс «@», он удаляется;
· каждая последовательность управляющих символов Юникода преобразуется в соответствующий символ Юникода;
· все символы управления форматом удаляются.
Идентификаторы, содержащие два последовательных символа подчеркивания (U+005F), зарезервированы для использования в реализации. Например, реализация может предоставлять расширенные ключевые слова, начинающиеся с двух символов подчеркивания.
Ключевые слова
Ключевое слово — это подобная идентификатору зарезервированная последовательность символов. Ключевое слово нельзя использовать в качестве идентификатора за исключением его использования с префиксом @.
keyword: one of
abstract as base bool break
byte case catch char checked
class const continue decimal default
delegate do double else enum
event explicit extern false finally
fixed float for foreach goto
if implicit in int interface
internal is lock long namespace
new null object operator out
override params private protected public
readonly ref return sbyte sealed
short sizeof stackalloc static string
struct switch this throw true
try typeof uint ulong unchecked
unsafe ushort using virtual void
volatile while
В некоторых положениях грамматики особые идентификаторы имеют особое значение, но не являются ключевыми словами. Такие идентификаторы иногда называются «контекстными ключевыми словами». Например, в объявлении свойства идентификаторы get и set имеют особое значение (§10.7.2). Идентификатор, отличный от get или set, никогда не разрешается в этих положениях, поэтому такое использование не приводит к конфликту с использованием этих слов в качестве идентификаторов. В других случаях, как, например, с идентификатором var в объявлениях с неявно типизированной локальной переменной (§8.5.1), контекстное ключевое слово может конфликтовать с объявленными именами. Тогда объявленное имя получает приоритет над использованием идентификатора в качестве контекстного ключевого слова.
Литералы
Литерал — это представление значения в исходном коде.
literal:
boolean-literal
integer-literal
real-literal
character-literal
string-literal
null-literal
Логические литералы
Логический литерал может иметь два значения: true и false.
boolean-literal:
true
false
Логический литерал имеет тип bool.
Целочисленные литералы
Целочисленные литералы используются для записи значений типа int, uint, long или ulong. Целочисленные литералы имеют две возможных формы: десятичную и шестнадцатеричную.
integer-literal:
decimal-integer-literal
hexadecimal-integer-literal
decimal-integer-literal:
decimal-digits integer-type-suffixopt
decimal-digits:
decimal-digit
decimal-digits decimal-digit
decimal-digit: one of
0 1 2 3 4 5 6 7 8 9
integer-type-suffix: one of
U u L l UL Ul uL ul LU Lu lU lu
hexadecimal-integer-literal:
0x hex-digits integer-type-suffixopt
0X hex-digits integer-type-suffixopt
hex-digits:
hex-digit
hex-digits hex-digit
hex-digit: one of
0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f
Тип целочисленного литерала определяется следующим образом:
· если литерал без суффикса, его тип — первый из этих типов, в которых его значение может быть представлено: int, uint, long, ulong;
· если литерал имеет суффикс U или u, он относится к первому из этих типов, в которых его значение может быть представлено как uint или ulong;
· если литерал с суффиксом L или l, его тип — первый из этих типов, в которых его значение может быть представлено: long и ulong;
· если литерал имеет суффикс UL, Ul, uL, ul, LU, Lu, lU или lu, он относится к типу ulong.
Если представленное целочисленным литералом значение находится за пределами диапазона типа ulong, выдается ошибка времени компиляции.
Рекомендуется использовать L вместо l при записи литералов типа long, так как букву l легко спутать с цифрой 1.
Для записи минимально возможных значений int и long в виде десятичных целочисленных литералов существуют следующие два правила:
· если десятичный целочисленный литерал со значением 2147483648 (2 31 ) и без суффикса целочисленного типа появляется в качестве лексемы, непосредственно следующей за лексемой оператора унарного минуса (§7.7.2), результатом является константа типа int со значением −2147483648 (−2 31 ). Во всех других ситуациях десятичный целочисленный литерал относится к типу uint.
· если десятичный целочисленный литерал со значением 9223372036854775808 (2 63 ) и без суффикса целочисленного типа или с суффиксом целочисленного типа L или l появляется в качестве лексемы, непосредственно следующей за лексемой оператора унарного минуса (§7.7.2), результатом является константа типа long со значением −9223372036854775808 (−2 63 ). Во всех других ситуациях десятичный целочисленный литерал имеет тип ulong;
Действительные литералы
Действительные литералы используются для записи значений типа float, double или decimal.
exponent-part:
e signopt decimal-digits
E signopt decimal-digits
real-type-suffix: one of
F f D d M m
Если суффикс действительного типа не указан, типом действительного литерала является double. Иначе суффикс действительного типа определяет тип действительного литерала следующим образом:
· Действительный литерал с суффиксом F или f относится к типу float. Например, каждый из литералов 1f, 1.5f, 1e10f и 123.456F относится к типу float.
· действительный литерал с суффиксом D или d имеет тип double. Например, литералы 1d, 1.5d, 1e10d и 123.456D все имеют тип double;
· действительный литерал с суффиксом M или m имеет тип decimal. Например, литералы 1m, 1.5m, 1e10m и 123.456M все имеют тип decimal; Этот литерал преобразуется в значение типа decimal, принимая его точное значение и при необходимости округляя до ближайшего могущего быть представленным значения с помощью банковского округления (§4.1.7). Любой масштаб, видимый в литерале, сохраняется, если только значение не округляется и не равно нулю (в этом последнем случае знак и масштаб будут равны 0). Следовательно, синтаксический разбор литерала 2.900m создаст десятичное значение со знаком 0, коэффициентом 2900 и масштабом 3.
Если указанный литерал не удается представить в предписанном типе, выдается ошибка времени компиляции.
Значение действительного литерала с типом float или double определяется с помощью режима «округления до ближайшего» по стандарту IEEE.
Обратите внимание, что в действительном литерале всегда требуются десятичные цифры после десятичной точки. Например, 1.3F — это действительный литерал, а 1.F — нет.
Символьные литералы
Символьный литерал представляет один символ и обычно состоит из символа в кавычках, например ‘a’.
character:
single-character
simple-escape-sequence
hexadecimal-escape-sequence
unicode-escape-sequence
single-character:
Any character except ‘ (U+0027), \ (U+005C), and new-line-character
simple-escape-sequence: one of
\’ \» \\ \0 \a \b \f \n \r \t \v
hexadecimal-escape-sequence:
\x hex-digit hex-digitopt hex-digitopt hex-digitopt
Символ, следующий за обратной косой чертой (\) в символе, должен быть одним из следующих: ‘, «, \, 0, a, b, f, n, r, t, u, U, x, v. Иначе возникает ошибка времени компиляции.
Шестнадцатеричная escape-последовательность представляет собой один символ Юникода со значением, образованным шестнадцатеричным числом, следующим за \x.
Если значение, представленное символьным литералом, больше U+FFFF, вызывается ошибка времени компиляции.
Управляющая последовательность символов Юникода (§2.4.1) в символьном литерале должна быть в диапазоне от U+0000 до U+FFFF.
Простая управляющая последовательность представляет собой кодировку символа Юникода, как показано в следующей таблице.
Escape-последовательность | Имя символа | Кодировка Юникода |
\’ | Одинарная кавычка | 0x0027 |
\» | Двойные кавычки | 0x0022 |
\\ | Обратная косая черта | 0x005C |
\0 | Null | 0x0000 |
\a | Предупреждение | 0x0007 |
\b | Возврат | 0x0008 |
\f | Перевод страницы | 0x000C |
\n | Новая строка | 0x000A |
\r | Возврат каретки | 0x000D |
\t | Горизонтальная табуляция | 0x0009 |
\v | Вертикальная табуляция | 0x000B |
Символьный литерал относится к типу char.
Строковые литералы
В C# поддерживается две формы строковых литералов: правильные строковые литералы и буквальные строковые литералы.
Правильный строковый литерал состоит из нуля или более символов, заключенных в двойные кавычки, например «hello», и может включать как простые управляющие последовательности (например \t для символа табуляции), так и шестнадцатеричные escape-последовательности и escape-последовательности Юникода.
Буквальный строковый литерал состоит из символа @ с последующими символом двойных кавычек, нулем или более символов и закрывающим символом двойных кавычек. Простым примером является @»hello». В буквальном строковом литерале символы между разделителями интерпретируются буквально, единственным исключением является управляющая последовательность кавычки. В частности, простые управляющие последовательности, шестнадцатеричные escape-последовательности и escape-последовательности Юникода не обрабатываются в буквальных строковых литералах. Буквальный строковый литерал может занимать несколько строк.
string-literal:
regular-string-literal
verbatim-string-literal
regular-string-literal-characters:
regular-string-literal-character
regular-string-literal-characters regular-string-literal-character
regular-string-literal-character:
single-regular-string-literal-character
simple-escape-sequence
hexadecimal-escape-sequence
unicode-escape-sequence
single-regular-string-literal-character:
Any character except » (U+0022), \ (U+005C), and new-line-character
verbatim-string-literal-characters:
verbatim-string-literal-character
verbatim-string-literal-characters verbatim-string-literal-character
verbatim-string-literal-character:
single-verbatim-string-literal-character
quote-escape-sequence
single-verbatim-string-literal-character:
Any character except «
Символ, следующий за символом обратной косой черты (\) в символе правильного строкового литерала, должен быть одним из следующих символов: ‘, «, \, 0, a, b, f, n, r, t, u, U, x, v. Иначе возникает ошибка времени компиляции.
string a = «hello, world»; // hello, world
string b = @»hello, world»; // hello, world
string c = «hello \t world»; // hello world
string d = @»hello \t world»; // hello \t world
string e = «Joe said \»Hello\» to me»; // Joe said «Hello» to me
string f = @»Joe said «»Hello»» to me»; // Joe said «Hello» to me
string g = «\\\\server\\share\\file.txt»; // \\server\share\file.txt
string h = @»\\server\share\file.txt»; // \\server\share\file.txt
string i = «one\r\ntwo\r\nthree»;
string j = @»one
two
three»;
показаны разнообразные строковые литералы. Последний строковый литерал j является буквальным строковым литералом, занимающим несколько строк. Символы между кавычками, включая пробелы, например символы новой строки, сохраняются буквально.
Поскольку в шестнадцатеричной escape-последовательности может быть переменное число шестнадцатеричных цифр, строковый литерал «\x123» содержит один символ с шестнадцатеричным значением 123. Чтобы создать строку, содержащую символ с шестнадцатеричным значением 12 и с последующим символом 3, можно написать «\x00123» или «\x12» + «3».
Строковый литерал имеет тип string.
Результатом каждого строкового литерала не обязательно является новый экземпляр строки. Если два или более строковых литерала, эквивалентных согласно оператору равенства строк (§7.10.7), появляются в одной программе, эти строковые литералы ссылаются на один и тот же экземпляр строки. Например, программа
class Test
<
static void Main() <
object a = «hello»;
object b = «hello»;
System.Console.WriteLine(a == b);
>
>
выведет True, так как эти два литерала ссылаются на один и тот же экземпляр строки.
Литерал null
Литерал NULL может быть неявно преобразован в ссылочный тип или обнуляемый тип.
Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций.
Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим.