3.1. ЛитералыВ С++ имеется набор встроенных типов данных для представления целых и вещественных чисел, символов, а также тип данных “символьный массив”, который служит для хранения символьных строк. Тип char служит для хранения отдельных символов и небольших целых чисел. Он занимает один машинный байт. Типы short, int и long предназначены для представления целых чисел. Эти типы различаются только диапазоном значений, которые могут принимать числа, а конкретные размеры перечисленных типов зависят от реализации. Обычно short занимает половину машинного слова, int – одно слово, long – одно или два слова. В 32-битных системах int и long, как правило, одного размера. Типы float, double и long double предназначены для чисел с плавающей точкой
и различаются точностью представления (количеством значащих разрядов) и диапазоном.
Обычно float (одинарная точность) занимает одно машинное слово, double (двойная
точность) – два, а long double (расширенная точность) – три.
20 // десятичный Если литерал начинается с 0, он трактуется как восьмеричный, если с 0х или
0Х, то как шестнадцатеричный. Привычная запись рассматривается как десятичное
число. 1). Буква U (или u) в конце определяет литерал как unsigned int, а две буквы – UL или LU – как тип unsigned long. Например: 128u 1024UL 1L 8Lu Литералы, представляющие действительные числа, могут быть записаны как с десятичной точкой, так и в научной (экспоненциальной) нотации. По умолчанию они имеют тип double. Для явного указания типа float нужно использовать суффикс F или f, а для long double - L или l, но только в случае записи с десятичной точкой. Например: 3.14159F 0/1f 12.345L 0.0 3el 1.0E-3E 2. 1.0L Слова true и false являются литералами типа bool. 'a' '2' ',' ' ' (пробел) Специальные символы (табуляция, возврат каретки) записываются как escape-последовательности . Определены следующие такие последовательности (они начинаются с символа обратной косой черты): новая строка \n горизонтальная табуляция \t забой \b вертикальная табуляция \v возврат каретки \r прогон листа \f звонок \a обратная косая черта \\ вопрос \? одиночная кавычка \' двойная кавычка \" escape-последовательность общего вида имеет форму \ooo, где ooo – от одной до трех восьмеричных цифр. Это число является кодом символа. Используя ASCII-код, мы можем написать следующие литералы: \7 (звонок) \14 (новая строка) \0 (null) \062 ('2') Символьный литерал может иметь префикс L (например, L'a'), что означает специальный
тип wchar_t – двухбайтовый символьный тип, который применяется для хранения
символов национальных алфавитов, если они не могут быть представлены обычным
типом char, как, например, китайские или японские буквы. "" (пустая строка) "a" "\nCC\toptions\tfile.[cC]\n" "a multi-line \ string literal signals its \ continuation with a backslash" Фактически строковый литерал представляет собой массив символьных констант,
где по соглашению языков С и С++ последним элементом всегда является специальный
символ с кодом 0 (\0). L"a wide string literal" Строковый литерал типа wchar_t – это массив символов того же типа, завершенный
нулем. "two" "some" породит массив из восьми символов – twosome и завершающий нулевой символ. Результат конкатенации строк разного типа не определен. Если написать: // this is not a good idea "two" L"some" то на каком-то компьютере результатом будет некоторая осмысленная строка, а на другом может оказаться нечто совсем иное. Программы, использующие особенности реализации того или иного компилятора или операционной системы, являются непереносимыми. Мы крайне не рекомендуем пользоваться такими конструкциями. Упражнение 3.1Объясните разницу в определениях следующих литералов: (a) 'a', L'a', "a", L"a" (b) 10, 10u, 10L, 10uL, 012, 0*C (c) 3.14, 3.14f, 3.14L Упражнение 3.2Какие ошибки допущены в приведенных ниже примерах? (a) "Who goes with F\144rgus?\014" (b) 3.14e1L (c) "two" L"some" (d) 1024f (e) 3.14UL (f) "multiple line comment"Назад Вперед Содержание |
2016-03-22 16:53:54 Чикен Гай Интересная статья, спасибо) Ваш сайт - второй по важности ресурс после Кернигана и Ричи:D Оставить комментарий: |