Справочник по C++

Написанное в данной статье  верно для копилятора gcc.

Структура программы:

Необходимый набор в шаблоне прогораммы;

Комментарии в С++:

/* — начало комментария

*/— конец комментария

//— однострочный комментарий

Пример:

 

 

Заголовок программы:

#include <‘имя заголовка’>

(в поздних версиях компилятора #include<‘имя заголовочного файла .h’> устаревший стиль)

Пример:

 

Пространство имени (|):

using namespace ‘название пространства имён’;

Пример:

 

Макросы:

#define ‘имя макроса’ ‘значение макроса’

Пример:

 

Таблица типов:

Тип <code>[attr width="100px"] Размер
байт
Описание Диапазон
Char
signed char
1 Символьный тип. Содержит один символ или строку символов. Каждый символ представляется одним байтом. Компилятор различет как отдельные следующие типы: char, singned char и unsigned char От 127 до 128
unsigned char 1 Символьный тип. Каждый символ пердставляется одним байтом. От 0 до 255
short
signed short
2 Целый тип. Сокращённое обозначение типа short int. Длина этого типа вне зависимости от используемого компилятора больше или равно длине типа char и меньше или равно типа int. От -32768 до 32767
unsigned short 2 Без знаковый целый тип. От 0 до 65535
int
signed int
4 Целый тип. Длина этого типа вне зависимости от используемого компилятора всегда больше или равна длине значения типа short int. От -2147483648 до 2147483647
unsigned int 4 Без знаковый целый тип. От 0 до 4294967259
long
signed long
4 Целый тип сокращенное обозначение типа long int. От -2147483648 до 2147483647
unsigned long 4 Без знаковый целый тип. От 0 до 4294967259
float 4 Тип данных с плавающей точкой. От 3.4E-38 до 3.4+38
double 8 Тип данных с плавающей точкой двойной точности. Длина типа double вне зависимости от используемого компилятора всегда больше или равна длине float и короче или равна длине типа long double. От 1.7E-308 до 1.7+308
long double 8 Тип данный с плавающей точкой двойной точности, длина которой равна длине значения типа double. Типы double и long double имеют одинаковое представление но компилятор трактует из как различные типы. От 1.7E-308 до 1.7+308
_intn n/8 Целый тип, размер в битах которого определяется значением n; и может быть равным 8, 16, 32 и 64 битам.

Инициализация типов:

‘имя типа’ ‘имя переменной’;

Инициализировать переменную можно в любом месте.

Пример:

Таблица диапазонов:

Диапазон шестнадцатиричных констант. Диапазон восьмеричных констант Тип.
0x0-0x7FF 0-077777 int
0x8000-0xFFFF 0100000-0177777 unsigned int
0x10000-0x7FFFFFFF 0200000-017777777777 long
0x80000000-0xFFFFFFFF 020000000000-037777777777 unsigneg long

Консольный ввод и вывод:

#include  <iostream>

<<-это оператор вывода.

>>-это оператор ввода.

count <<‘выводимая строка’;

cin >>‘имя переменной’;

Пример:

 

printf(‘строка вывода с кодами типов переменных ‘ ,’ссылки на переменные записанные в той же последовательности’)

scanf(‘коды переменных с разделителями’, ‘ссылки на переменные записанные в той же последовательности’)

 

Коды типов:

Код Значение
%d, %i Десятичное знаковое числo.
%o Восьмеричное без знаковое число.
%u Десятичное без знаковое число.
%x, %X Шестнадцатиричное число. x- нижний регистр букв(abcdef), X- верхний регистр букв(ABCDEF).
%f, %F Числа с плавающей запятой.
%e, %E Числа с плавающей запятой в экспоненциальной форме записи (0.1e+13). e- символ «e» в нижнем регистре,  E — символ «E» в верхнем регистре.
%g, %G Числа с плавающей запятой.
%a, %A Число с плавающей запятой в шестнадцатеричном виде.
%c Вывод символа с кодом.
%s Вывод строки с нулевым заершающим байтом.
%S Тоже, что и %s с модицикатором длины l.
%p Вывод указателя.
%n Запись по указателю.
%% Символ для вывода знака процента.

 

Спецификаторы для %d, %i, %o, %u, %x, %X

Спецификатор Тип
отсутсвует int или unsigneg int
l long int или unsigned long int
hh Аргумент int или unsigned int. Приведение к типу signed char или unsigned char.
h Аргумент int или unsigned int.  Приведение к типу short int или unsigned short int.
ll  long long int или unsigned long long int
j intmax_t или uintmax_t
z size_t
t ptrdiff_t
L __int64 или unsigned __int64

 

Унарные опеарации:

Операция Описание
арифметическое отрицание.
~ побитовое логическое отрицание.
! логическое отрицание.
* разадресация (косвенная адресация).
#171;amp;« вычисление адреса.
+ унарный плюс.
++ увеличение.
уменьшение.
sizeof размер

Таблица операций:

Знак операции Операция Группа операций
* Умножение Мультипликативные<code>[attr rowspan="3"]
/ Деление
% Остаток от деления
+ Сложение Аддитивные<code><code>[attr rowspan="2"]
Вычитание
#171;lt;<« Сдвиг в лево Операция сдвига <code>[attr rowspan="2"]
#171;gt;>« Сдвиг в право
#171;lt;« Меньше Операция отношения <code>[attr rowspan="6"]
#171;gt;« Больше
#171;lt;=« Меньше или равно
#171;gt;=« Больше или равно
== Равно
!= Не равно
#171;amp;« Поразрядное И Поразрядные операции <code>[attr rowspan="3"]
| Поразрядное ИЛИ
^ Поразрядное исключающее ИЛИ
#171;amp;&« Логическое И Логические операции <code>[attr rowspan="2"]
|| Логическое ИЛИ
, Последовательное вычисление Последовательные вычисления
= Присваивание Операции присваивания <code>[attr rowspan="11"]
*= Умножение с присваиванием
/= Деление с присваиваниеме
%= Остаток от деления с присваиванием
-= Вычитание с присваиванием
+= Сложение с присваиванием
#171;lt;<=« Сдвиг в лево с присваиванием
#171;gt;>=« Сдвиг в право с присваиванием
#171;amp;=« Поразрядное И с присваиванием
|= Поразрядное ИЛИ с присваиванием
^= Поразрядное исключающее ИЛИ с присваиванием

Таблица управляющих последовательностей:

Управляющая последовательность Наименования Шеснадцатеричная замена
\a Звонок 007
\b Возврат на шаг 008
\t Горизонтальная табуляция 009
\n Переход на новую строку 00A
\v Вертикальная табуляция 00B
\r Возврат каретки 00C
\f Перевод формата 00D
Кавычки 022
\' Апостроф 027
\0 Ноль-символ 000
#171;\\#187; Обратная дробная черта 05C
\ddd Символ набора кодов ПЭВМ в восьмеричном представлении.
\xddd Символ набота кодов ПЭВМ в шестнадцатеричном представлении.

Функции:

Описание функции:

‘тип данных которые возвращает функция’ ‘имя функции’ (‘переменные которые использует функция’)

{

     операторы;

}

Адресация к функциям:

‘имя функции’(‘переменные которые использует функция’);

Пример:

Операторы ветвления:

Оператор «if», «else»:

if (‘логическое выражение’) /*если логическое выражение истинно, то выполняется оператор,

                                                          если ложно, то программа выполняется дальше.*/

     ‘оператор’;

if (‘логическое выражение’) /*если логическое выражение истинно, то выполняется оператор1,

                                                           если ложно, то выполняется оператор2.*/

     ‘оператор1’;

else

     ‘оператор2’;

Пример:

 

Оператор «?»:

‘логическое выражение’ ? ‘выражение1’:‘выражение2’;

Если значение логического выражения истинно, то вычисляется выражение1, в противном случае вычисляется выражение2.

Пример:

Оператор «switch»:

switch(‘выражение целого типа’)

{

     case ‘значение1’ :

          ‘последовательность операторов1’

     break;

     case ‘значение2’ :

          ‘последовательность операторов2’

     break;

    

     case ‘значение n’:

          ‘последовательность операторовn’

     break;

     default

          /*ветку default можно не описывать. Она выполняется, если ни один из вышестоящего выражения не удовлетворено*/

          ‘последовательность операторовn+1’;

}

Пример:

 

Операторы цикла:

Оператор «while»:

while (‘логическое выражение’) //цикл с проверкой условия на верху

     ‘оператор’;

Пример:

Оператор «do..while»:

do

     оператор;

while (‘логическое выражение’); //Цикл условия проверки внизу

Пример:

Оператор «for»:

for(‘инициализация’; ‘проверка’; ‘новое_значение’)

     ‘оператор’;

Пример:

Оператор «;»:

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

Пример:

Массивы:

Описание массивов:

‘тип данных’ ‘имя массива’ [‘размер массива’];

Адресация к массивам:

‘имя массива’ [‘значение индекса’];

Пример:

Константы:

‘тип’ ‘имя константы’ = ‘значение константы’; //Описание константы

Пример:

Классы:

Объявление классов:

class ‘имя класса’{

          ‘закрытые функции и переменные класса’;

     public:

          ‘имя класса’(‘список параметров’); //Конструктор

          ~‘имя класса’();                                    //Деструктор

          ‘открытые функции и переменные класса’;

} ‘список объектов’;

Определение функции-члена:

‘тип возращаемого значения’ ‘имя класса’::‘имя функции’ (‘список параметров’)

{

     ‘тело функции’;

}

Определение конструктора:

‘имя класса’::‘имя класса’ (‘список параметров’)

{

     ‘тело конструктора’;

}

Определение деструктора

‘имя класса’::~‘имя класса’ (‘список параметров’)

{

     ‘тело деструктора’;

}

Объявление класса:

‘имя класса’ ‘имя объекта’(‘список параметров’);

Обращение к членам класса:

‘имя класса’.‘член класса’;

‘имя класса’->‘член класса’;

Пример:

Структуры:

Объявление структур:

struct ‘имя структуры’{

          ‘имя структуры’(‘список параметров’);//Конструктор

          ~‘имя структуры’();                                   //Деструктор

          ‘открытые функции и переменные структуры’;

     private:

          ‘закрытые функции и переменные структуры’;

} ‘список объектов’;

Определение функции-члена, конструктора, деструктора, объявление структуры, обращение к членам структуры такие же как у класса.

Встраиваемые функции:

inline ‘тип возращаемого значения’ ‘имя функции’(‘список параметров’)

{

     ‘тело функции’;

}

Пример:

Встраиваемые функции в объявлении класса:

Объявление функции:

class

    

     public:

          ‘тип возвращаемого значения’ ‘имя функции’(‘список параметров’){‘тело функции’;}

    

};

Пример:

Дружеские функции:

class ‘имя класса’{

    

     public:

          friend ‘тип возвращаемого значения’ ‘имя функции’(‘список параметров’);

};

‘тип возвращаемого значения’ ‘имя функции’ (‘список параметров’);

{

     ‘тело функции’

}

Пример:

 

 

Комментарии:

Комментарии 8

  • 1. Точка с запятой после using namespace std не нужна;
    2. В for’е то, что стоит в круглых скобках разделяется точками с запятыми, а не запятыми;
    3. Для кода на любом языке всегда используй моноширинный шрифт (Courier, Courier New, Consolas, monospace), даже если этот код не выделен в отдельный абзац;
    4. Там, где написано «Обращение к членам класса» используется один символ двоеточия, не верно;
    5. #include без .h — это не устаревший стиль, это заголовочные файлы, пришедшие из чистого С. В C++ заголовочные файлы часто без расширения и все идентификаторы, объявленные в этих заголовочных файлах группируются в пространство имён std.

    А так, неплохой краткий справочник по синтаксису=)

    • Здравствуйте.
      Большое спасибо, что вы захотели сделать мой справочник лучше, это мне очень льстит.

      >1. Точка с запятой после using namespace std не нужна;
      К сожалению многие компиляторы с вами не согласяться. Возможно вы имели ввиду конструкцию:
      namespace std
      {

      }
      Тогда да, точка с зяпятой после неё дейтсвительно не нужна.
      Или можете сказать название компилятора или IDE, где это работает?

      >2. В for’е то, что стоит в круглых скобках разделяется точками с запятыми, а не запятыми;
      Да, косяк поправил.

      >3. Для кода на любом языке всегда используй моноширинный шрифт (Courier, Courier New, Consolas, monospace), даже если этот код не выделен в отдельный абзац;
      посмотрел на Courier, стало скучнее. 🙂 Лан, пусть дети привыкают.

      4. Там, где написано «Обращение к членам класса» используется один символ двоеточия, не верно;
      >> поменял на точку и стрелочку.

      >> 5. #include без .h — это не устаревший стиль, это заголовочные файлы, пришедшие из чистого С. В C++ заголовочные файлы часто без расширения и все идентификаторы, объявленные в этих заголовочных файлах группируются в пространство имён std.

      Убрал слова «в поздних версиях компилятора». В данное время это вызывает смущение у людей.
      То, что он прешёл из C оно не отменяет «устаревший стиль», это и было «в поздних версиях компилятора». Объясню, я хотел этим сказать себе, что данный стиль объявления библиотек использовать не стоит, так как он пришёл из «прошлого» и сейчас есть механизмы намного лучше.

      >А так, неплохой краткий справочник по синтаксису=)

      И ещё раз спасибо, что обратили внимания на данную статью.

  • Ещё одна проблема:
    n=2 ? str=’да’ : str=’нет’;
    некорректно.
    Используй следующее:
    str = (n == 2 ? «да» : «нет»);
    Обрати внимание, что строки-константы заключаются в двойные кавычки.
    Весь тернарный оператор возвращает либо часть между символами «?» и «:», либо часть после символа «:». Возвращать результат операции присваивания является избыточным, как в твоём примере.
    Сорре, что так много написал, кратко просмотрел, просто хотелось, чтобы справочник был лучше, он же вылез одним из первых в google-поисковике, а значит меньше ошибок должно быть, особенно таких критических.

    • Я очень люблю фидбеки. Так что извинятся вообще не стоит. 🙂
      здесь был вопрос в понятности этого написания для не подготовленного человека. 🙂
      здесь str = (n == 2 ? «да» : «нет»); сильно много равно рядом, и глазу не за что зацепиться 🙂 решил разбавить написал:
      count << n == 2 ? "да" : "нет";

  • Привет мне нужна помощь с программой C ++

  • круто продолжай в том же духе

  • здравствуйте а есть подобный справочник в екселе? я с радостью бы скачал

  • Оператор «count» вывода написан правильно?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *