Символьные константы имеют тип int. Младший байт хранит код символа, а старший байт — знаковое расширение младшего байта.
Помимо односимвольных констант, в СП ТС реализованы двухсимвольные константы, например 'An', '\n\t', '\007\007'. Они представляются 16-битовым значением типа int, причем первый символ заносится в младший байт, а второй — в старший. Односимвольные константы также представляются 16-битовыми значениями типа int, и в старший байт, как и в СП MSC, заносится знаковое расширение младшего байта.
Компилятор языка Си имеет опцию, позволяющую определить тип char по умолчанию как беззнаковый тип — unsigned char. В этом случае старший байт любой односимвольной константы будет нулевым.
Символьная строка — это последовательность символов, заключенная в двойные кавычки. Символьная строка рассматривается как массив символов, каждый элемент которого представляет отдельный символ. Символьная строка имеет следующую форму представления:
"<символы>"
<символы> — это произвольное (в том числе нулевое) количество символов из множества представимых символов, за исключением символов двойная кавычка ("), обратный слэш (\) и новая строка. Чтобы использовать эти символы внутри символьной строки, нужно представить их с помощью соответствующих специальных символов, как показано на следующих примерах:
"Это символьная строка\n"
"Первый \\ Второй"
"\"Да, конечно,\"— сказала она."
"Следующая строка — пустая:"
""
Для формирования символьных строк, занимающих несколько строк текста программы, используется комбинация символов — обратный слэш и новая строка. Компилятор языка Си проигнорирует эту комбинацию символов, а символьные строки объединит и представит в памяти как одну строку. Например, символьная строка:
"Длинные строки могут быть раз\
биты на части."
идентична строке:
"Длинные строки могут быть разбиты на части."
В СП MSC версии 5.0 и в СП ТС для формирования символьных строк, занимающих несколько строк текста программы, не требуется применения комбинации символов обратный слэш и новая строка. Символьные строки, следующие друг за другом и не разделенные ничем, кроме пробельных символов, объединяются компилятором языка Си в одну строку.
Например, программа
main()
{
char *р;
p = "Данная программа — пример того, как можно"
" автоматически\nосуществлять объединение"
" строк в очень длинную строку;\n"
" такая форма записи может повысить"
" наглядность программ.\n";
printf("%s", p);
}
напечатает следующий текст:
Данная программа—пример того, как можно автоматически
осуществлять объединение строк в очень длинную строку;
такая форма записи может повысить наглядность программ.
Каждый символ символьной строки (в том числе каждый специальный символ) хранится в отдельном байте оперативной памяти. Нулевой символ ('\0') автоматически добавляется в качестве последнего байта символьной строки и служит признаком ее конца. Каждая символьная строка в программе рассматривается как отдельный объект; если в программе содержатся две идентичные символьные строки, то они будут занимать две различные области оперативной памяти.
В СП ТС реализована опция компиляции, позволяющая хранить в памяти только одну из идентичных строк.
Тип символьной строки—массив элементов типа char. Число элементов в массиве равно числу символов в символьной строке плюс один, поскольку нулевой символ (признак конца символьной строки) тоже является элементом массива.
Идентификаторы — это имена переменных, функций и меток, используемых в программе. Идентификатор вводится в объявлении переменной или функции, либо в качестве метки оператора. После этого его можно использовать в последующих операторах программы. Идентификатор — это последовательность из одной или более латинских букв, цифр и символов подчеркивания, которая начинается с буквы или символа подчеркивания. Допускается любое число символов в идентификаторе, однако только первые 32 символа рассматриваются компилятором языка Си как значащие. Если первые 32 символа у двух идентификаторов совпадают, компилятор языка Си рассматривает их как один и тот же идентификатор. Компоновщик также распознает 32 символа в именах глобальных переменных.
В идентификаторах версии 1.5 СП ТС допускается знак $, однако, идентификатор не может с него начинаться.
Компиляторы языка Си в СП MSC и СП ТС имеют опцию, позволяющую изменять число значащих символов в идентификаторах.