Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вопросы 9-44.docx
Скачиваний:
4
Добавлен:
22.09.2019
Размер:
252.07 Кб
Скачать

12. Строковые константы. Особенности и примеры их применения.

Строковая константа, или строковый литерал, - это нуль или более символов, заключенных в двойные кавычки, как, например, "Я строковая константа” или "" /* пустая строка */ Кавычки не входят в строку, а служат только ее ограничителями. Так же, как и в символьные константы, в строки можно включать эскейп-последовательности; \", например, представляет собой двойную кавычку. Строковые константы можно конкатенировать ("склеивать”) во время компиляции; например, запись двух строк "Здравствуй," " мир!" эквивалентна записи одной следующей строки: "Здравствуй, мир!" Указанное свойство позволяет разбивать длинные строки на части и располагать эти части на отдельных строчках. Фактически строковая константа — это массив символов. Во внутреннем представлении строки в конце обязательно присутствует нулевой символ '\0' , поэтому памяти для строки требуется на один байт больше, чем число символов, расположенных между двойными кавычками. Это означает, что на длину задаваемой строки нет ограничения, но чтобы определить ее длину, требуется просмотреть всю строку. Функция strlen(s) вычисляет длину строки s без учета завершающего ее символа '\0' . Ниже приводится наша версия этой функции: /* strlen: возвращает длину строки s */ int strlen(char s[]) { int i = 0; while (s[i] != '\0') ++i; return i; } Функция strlen и некоторые другие, применяемые к строкам, описаны в стандартном заголовочном файле <string.h>. Будьте внимательны и помните, что символьная константа и строка, содержащая один символ, не одно и то же: 'x' не то же самое, что "x". Запись 'x' обозначает целое значение, равное коду буквы x из стандартного символьного набора, а запись "x" - массив символов, который содержит один символ (букву x) и '\0'.

13. Числовые целые константы. Особенности и примеры их применения.

В алгоритмическом языке C активно используются как префиксы, так и суффиксы:

  • 0x5,0X5 - шестнадцатеричное целое число (префикс - 0x или 0X );

  • 05 - восьмеричное целое число (префикс - незначащий нуль в начале);

  • 5H,5h - короткое целое число (суффикс - h или H от sHort )

  • 5U,5u - целое число без знака (суффикс - u или U, от Unsigned );

  • 5HU,5hu,5Hu,5hU - короткое целое число без знака;

  • 5L,5l - длинное целое число (суффикс - l или L, от Long );

  • 5LU,5lu,5Lu,5lU - длинное целое число без знака;

Над целочисленными данными (константами и переменными) в языках C, C++ можно выполнять обычные арифметические операции - сложение ( x+y ), вычитание ( z-5 ), умножение ( x1*x3 ) и деление ( y/w ). В отличие от языка Pascal здесь деление целочисленных операндов дает целочисленный результат. Например,5/2=2. Для получения остатка от деления в C, C++ используется операция %, например, 5%2=1.

Целочисленные данные можно подвергать операции сдвига как влево (знак операции - <<), так и вправо (знак операции - >>) на заданное количество двоичных разрядов.

Операция сдвига вправо работает по-разному для целых чисел со знаком и целых чисел без знака.

Дело в том, что для чисел со знаком операция сдвига на n разрядов эквивалентна умножению на 2n при сдвиге влево или делению на 2n при сдвиге вправо. Поэтому для отрицательного операнда результат сдвига должен остаться отрицательным. С этой целью при сдвиге вправо производится размножение знакового разряда.

Над одноименными двоичными разрядами целочисленных операндов могут выполняться логические операции - логическое сложение (символ операции '| '), логическое умножение (символ операции ' & '), исключающее ИЛИ (символ операции ' ^ ') и инвертирование (символ операции ' ~ ').

Определенную помощь при обработке целочисленных данных могут оказать системные функции математической библиотеки. Прототипы этих функций описаны в заголовочных файлах math.h и stdlib.h.

Внутреннее представление величины целого типа — целое число в двоичном коде. При использовании спецификатора signed старший бит числа интерпретируется как знаковый (О — положительное число, 1 — отрицательное). Спецификатор unsigned позволяет представлять только положительные числа, поскольку старший разряд рассматривается как часть кода числа.