Главная » Статьи » Программирование » С/С++

Элементы языка С++

Элементы языка С++

Алфавит и лексемы языка С++

В алфавит языка Си входят:

  • прописные и строчные буквы латинского алфавита;
  • цифры 0 … 9;
  • специальные знаки:

"  {}  ,  |  []  ()  +  -  /  %  \   ;

'  :  ?  <  =  >  _  !  &  #  ~  ^  .  *

 

Из символов алфавита формируются лексемы языка:

  • идентификаторы;
  • ключевые слова;
  • константы;
  • знаки операций;
  • разделители (знаки пунктуации).

 

Кроме того, в языке СИ широко используются так называемые, управляющие последовательности, т.е. специальные символьные комбинации, используемые в функциях ввода и вывода информации. Управляющая последовательность строится на основе использования обратной дробной черты (\) (обязательный первый символ) и комбинацией латинских букв и цифр.

Управляющая последовательность

Наименование

Шеснадцатеричная замена

\a

Сигнал

007

\b

BS или забой

008

\t

Горизонтальная табуляция

009

\n

Переход на новую строку

00A

\v

Вертикальная табуляция

00B

\r

Возврат каретки

00C

\f

Перевод формата

00D

\"

Кавычки

022

\'

Апостроф

027

\0

Нулевой символ

000

\\

Обратная дробная черта

05C

\ddd

Символ набора кодов в восьмеричном представлении

 

\xddd

Символ набора кодов в шестнадцатеричном представлении

 

Последовательности вида \ddd и \xddd (здесь d обозначает цифру) позволяет представить символ из набора кодов как последовательность восьмеричных или шестнадцатеричных цифр соответственно. Например, символ возврата каретки может быть представлен различными способами:

\r - общая управляющая последовательность,

\015 - восьмеричная управляющая последовательность,

\x00D - шестнадцатеричная управляющая последовательность.

Следует отметить, что в строковых константах всегда обязательно задавать все три цифры в управляющей последовательности. Например, отдельную управляющую последовательность \n (переход на новую строку) можно представить как \010 или \xA, но в строковых константах необходимо задавать все три цифры, в противном случае, символ или символы следующие за управляющей последовательностью будут рассматриваться как ее недостающая часть.:

Отметим тот факт, что, если обратная дробная черта предшествует символу не являющемуся управляющей последовательностью и не являющемуся цифрой, то эта черта игнорируется, а сам символ представляется как литеральный. Например:

символ \h представляется символом h в строковой или символьной константе.

Кроме определения управляющей последовательности, символ обратной дробной черты (\) используется также как символ продолжения. Если за (\) следует (\n), то оба символа игнорируются, а следующая строка является продолжением предыдущей. Это свойство может быть использовано для записи длинных строк.

Константы

Константами называются перечисление величин в программе. В языке Си разделяют четыре типа констант:

  • целые константы;
  • константы с плавающей запятой;
  • символьные константы;
  • строковые литералы.

Целая константа: это десятичное, восьмеричное или шестнадцатеричное число, которое представляет целую величину в одной из следующих форм: десятичной, восьмеричной или шестнадцатеричной.

Десятичная константа состоит из одной или нескольких десятичных цифр, причем первая цифра не должна быть нулем (в противном случае число будет воспринято как восьмеричное).

Восьмеричная константа состоит из обязательного нуля и одной или нескольких восьмеричных цифр (среди цифр должны отсутствовать восьмерка и девятка, так как эти цифры не входят в восьмеричную систему счисления).

Шестнадцатеричная константа начинается с обязательной последовательности 0х или 0Х и содержит одну или несколько шестнадцатеричных цифр (цифры представляющие собой набор цифр шестнадцатеричной системы счисления: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F)

      Примеры целых констант:

         Десятичная      Восьмеричная       Шестнадцатеричная

         константа       константа          константа

             16             020                0x10

            127             0117               0x2B

            240             0360               0XF0

Если требуется сформировать отрицательную целую константу, то используют знак "-" перед записью константы (который будет называться унарным минусом). Например: -0x2A, -088, -16 .

Каждой целой константе присваивается тип, определяющий преобразования, которые должны быть выполнены, если константа используется в выражениях.

Тип константы определяется следующим образом:

- десятичные константы рассматриваются как величины со знаком, и им присваивается тип int (целая) или long (длинная целая) в соответствии со значением константы. Если константа меньше 32768, то ей присваивается тип int в противном случае long.

- восьмеричным и шестнадцатеричным константам присваивается тип int, unsigned int (беззнаковая целая), long или unsigned long в зависимости от значения константы согласно таблице.

Таблица

Диапазон шестнадцатеричных констант

Диапазон восьмеричных констант

Тип

0x0 - 0x7FFF

0 - 077777

int

0X8000 - 0XFFFF

0100000 - 0177777

unsigned int

0X10000 - 0X7FFFFFFF

0200000 - 017777777777

long

0X80000000 - 0XFFFFFFFF

020000000000 - 037777777777

unsigned long

Для того чтобы любую целую константу определить типом long, достаточно в конце константы поставить букву "l" или "L". Пример:

5l, 6l, 128L, 0105L, OX2A11L.

Константа с плавающей точкой - десятичное число, представленное в виде действительной величины с десятичной точкой или экспонентой. Формат имеет вид:

[ цифры ].[ цифры ] [ Е|e [+|-] цифры ] .

Число с плавающей точкой состоит из целой и дробные части и (или) экспоненты. Константы с плавающей точкой представляют положительные величины удвоенной точности (имеют тип double). Для определения отрицательной величины необходимо сформировать константное выражение, состоящее из знака минуса и положительной константы.

Примеры: 115.75, 1.5Е-2, -0.025, .075, -0.85Е2

Символьная константа - представляется символом, заключенном в апострофы. Управляющая последовательность рассматривается как одиночный символ, допустимо ее использовать в символьных константах. Значением символьной константы является числовой код символа.

Примеры:

' '- пробел ,

'Q'- буква Q ,

'\n' - символ новой строки ,

'\\' - обратная дробная черта ,

'\v' - вертикальная табуляция .

Символьные константы имеют тип int и при преобразовании типов дополняются знаком.

Строковая константа (литерал) - последовательность символов (включая строковые и прописные буквы русского и латинского а также цифры) заключенные в кавычки (") . Например: "Автор учебника".

Отметим, что все управляющие символы, кавычка ("), обратная дробная черта (\) и символ новой строки в строковом литерале и в символьной константе представляются соответствующими управляющими последовательностями. Каждая управляющая последовательность представляется как один символ. Например, при печати литерала "Автор\n учебника" его часть "Автор" будет напечатана на одной строке, а вторая часть " учебника" на следующей строке.

Символы строкового литерала сохраняются в области оперативной памяти. В конец каждого строкового литерала компилятором добавляется нулевой символ, представляемый управляющей последовательностью \0.

Строковый литерал имеет тип char[] . Это означает, что строка рассматривается как массив символов. Отметим важную особенность, число элементов массива равно числу символов в строке плюс 1, так как нулевой символ (символ конца строки) также является элементом массива. Все строковые литералы рассматриваются компилятором как различные объекты. Строковые литералы могут располагаться на нескольких строках. Такие литералы формируются на основе использования обратной дробной черты и клавиши ввод. Обратная черта с символом новой строки игнорируется компилятором, что приводит к тому, что следующая строка является продолжением предыдущей. Например:

"строка неопределенной \n

длины"

полностью идентична литералу

"строка неопределенной длинны" .

Для сцепления строковых литералов можно использовать символ (или символы) пробела. Если в программе встречаются два или более строковых литерала, разделенные только пробелами, то они будут рассматриваться как одна символьная строка. Этот принцип можно использовать для формирования строковых литералов занимающих более одной строки.

Идентификатор

Идентификатор – последовательность из букв латинского алфавита и десятичных цифр и символов подчеркивания, начинающаяся не с цифры

Два идентификатора для образования которых используются совпадающие строчные и прописные буквы, считаются различными. Например: abc, ABC, A128B, a128b .

Важной особенностью является то, что компилятор допускает любое количество символов в идентификаторе, хотя значимыми являются первые 31 символ. Идентификатор создается на этапе объявления переменной, функции, структуры и т.п. после этого его можно использовать в последующих операторах разрабатываемой программы. Следует отметить важные особенности при выборе идентификатора.

Во первых, идентификатор не должен совпадать с ключевыми словами, с зарезервированными словами и именами функций библиотеки компилятора языка СИ.

Во вторых, следует обратить особое внимание на использование символа (_) подчеркивание в качестве первого символа идентификатора, поскольку идентификаторы построенные таким образом, что, с одной стороны, могут совпадать с именами системных функций и (или) переменных, а с другой стороны, при использовании таких идентификаторов программы могут оказаться непереносимыми, т.е. их нельзя использовать на компьютерах других типов.

В третьих, на идентификаторы используемые для определения внешних переменных, должны быть наложены ограничения, формируемые используемым редактором связей (отметим, что использование различных версий редактора связей, или различных редакторов накладывает различные требования на имена внешних переменных).

Ключевые слова

Ключевые слова – это идентификаторы, зарезервированные в языке для специального использования. Их можно использовать только в соответствии со значением известным компилятору языка Сb.

Приведем список ключевых слов

   auto      double     int   struct  break   else   long   switch

   register  tupedef    char  extern  return  void   case   float

   unsigned  default    for   signed  union   do     if     sizeof

   volatile  continue   enum  short   while

Кроме того в рассматриваемой версии реализации языка Си, зарезервированными словами являются :

_asm, fortran, near, far, cdecl, huge, paskal, interrupt.

Ключевые слова far, huge, near позволяют определить размеры указателей на области памяти. Ключевые слова _asm, cdelc, fortran, pascal служат для организации связи с функциями написанными на других языках, а также для использования команд языка ассемблера непосредственно в теле разрабатываемой программы на языке Си.

Ключевые слова не могут быть использованы в качестве идентификаторов.

Использование комментариев в тексте программы

Комментарий - это набор символов, которые игнорируются компилятором, на этот набор символов, однако, накладываются следующие ограничения. Внутри набора символов, который представляет комментарий не может быть специальных символов определяющих начало и конец комментариев, соответственно (/* и */). Отметим, что комментарии могут заменить как одну строку, так и несколько. Например:

     /* комментарии к программе */

     /* начало алгоритма */

      или

     /* комментарии  можно  записать в следующем виде,  однако надо

  быть осторожным, чтобы внутри последовательности, которая игнорируется компилятором, не попались операторы программы, которые также будут игнорироваться */

 

 

Категория: С/С++ | Добавил: Алексей (05.10.2014)
Просмотров: 1575 | Комментарии: 4 | Теги: программирование, си, С++, Элементы языка С++ | Рейтинг: 0.0/0
Всего комментариев: 4
avatar
1
Спасибо за полезный материал.
avatar
2

Цитата
Комментарий - это набор символов, которые игнорируются компилятором, на этот набор символов, однако, накладываются следующие ограничения. Внутри набора символов, который представляет комментарий не может быть специальных символов определяющих начало и конец комментариев, соответственно (/* и */). Отметим, что комментарии могут заменить как одну строку, так и несколько. Например:
     /* комментарии к программе */
     /* начало алгоритма */
      или
     /* комментарии  можно  записать в следующем виде,  однако надо
  быть осторожным, чтобы внутри последовательности, которая игнорируется компилятором, не попались операторы программы, которые также будут игнорироваться */

А можно писать комментарий внутри комментария?
avatar
0
3
Ну ты можешь написать

/*
....
....
/*  ....... */ - только вот это место в любом случае часть комментария и оно уже закомментировано -> второй раз получается комментировать не нужно
....
....
*/


Хотя, может ты имела ввиду не будут ли комментарии в коде, если они друг в друге как-то приводить к ошибкам - нет не будут. Комментарии так или иначе не являются частью кода - переживать не стоит по их поводу.
avatar
4
ясно
avatar