| Операция | Описание | Пример |
| Sizeof | Позволяет получить размер (в байтах) операнда, стоящего справа. Операндом может быть обозначение типа, заключенное в круглые скобки, либо имя конкретной переменной (как базового, так и сложного типа) | sizeof (double) /* если structName - имя структуры, то следующий оператор возвратит ее размер */ sizeof structName |
| (type) | Операция приведения типа преобразует следующее за ней значение в тип, определенный ключевым словом (или словами), заключенным в круглые скобки | /* следующая операция преобразует целое число 7 в число с плавающей точкой 7.0 */ (float)7 |
| ?: | Операция условия имеет три операнда, каждый из которых является выражением, расположенным следующим образом: выражение 1 ? выражение2: выражение З Результат равен значению выражение 2, если выражение 1 истинно и значению выражение З, в противном случае. | /* Результат операции равен большему из двух чисел а и б */ (а >b) ? а: b |
| , (запятая) | Операция "запятая" связывает два выражения в одно и гарантирует, что левое выражение будет вычислено первым | /* Наиболее часто используется в цикле for * / for(i=0, nStep=2; niter < 10; i+=nStep); { // тело цикла } |
Приоритет выполнения операции
| Операции (от высшего приоритета к низшему) | Порядок выполнения |
| ( ) { } - > . (точка) | слева направо |
| ! ~ ++ -- - (тип) * & sizeof (все унарные) | справа налево |
| * / % | слева направо |
| + - | ---- “----- |
| << >> | ---- “----- |
| < <= > >= | ---- “----- |
| == != | ---- “----- |
| & | ---- “----- |
| ^ | ---- “----- |
| | | ---- “----- |
| && | ---- “----- |
| || | ---- “----- |
| ?: | ---- “----- |
| = += -= *= /= %= | справа налево |
| , (запятая) | Слева направо |
Предопределенные макросы
| Макрос | Комментарий |
| _date_ | Дата компиляции текущего исходного файла, представленная в виде строковой константы в формате Mmm dd yyyy (месяц день год) |
| _file_ | Строковая константа, являющаяся именем текущего исходного файла |
| _line_ | Десятичная целая константа, представляющая текущий номер строки исходного текста |
| _stdc_ | Равенство 1 показывает полную совместимость со стандартом ANSI С; в противном случае не определен |
| _TIME_ | Строковая константа, представляющая время начала обработки текущего исходного файла в формате hh:mm:ss (часы:минуты:секунды) |
| _timestamp_ | Строковая константа, представляющая дату и время последней. Модификации текущего исходного файла в формате Ddd Mmm Date hh:mm:ss yyyy (аббревиатура дня недели месяц число часы: минуты: секунды год) |
Венгерская нотация
| Префикс | Имя |
| a | Array (Массив) |
| с | Character (Символ) |
| d | Date (Данные) |
| dbl | Double (Двойной) |
| dc | Device Context (Контекст устройства) |
| dw | Double Word (Двойное слово) |
| f | Flag, Boolean or Logical (Флаг, Булевское или Логическое) |
| h | Handle (Дескриптор) |
| i | Integer (Целое) |
| inst | Instance (Экземпляр, Копия) |
| I | Long (Длинное) |
| li | Long Integer (Длинное целое) |
| Ip | Long Pointer (Дальний указатель) |
| msg | Message (Сообщение) |
| n | Numeric (Цифровое) |
| о | Object (Объект) |
| pal | Palette (Палитра) |
| psz | Pointer to a Zero Terminated String (Указатель на строку с завершающим нулем) |
| ptr | Pointer (Указатель (или Р, когда использован с другими переменными, подобными psz)) |
| r | Real (Действительное, Вещественное) |
| гс | Rectangle (Прямоугольник) |
| rgb | Red, Green, Blue (Переменная цвета) |
| rsrc | Resource (Ресурс) |
| sgl | Single (Единственное) |
| si | Short Integer (Короткое целое) |
| sz | Zero Terminated String (Строка с завершающим нулем) |
| u | Unsigned (Без знаковое) |
| ui | Unsigned Integer or Byte (Без знаковое целое или Байт) |
| w | Word (Слово) |
| wnd | Window (Окно) |
Директивы препроцессора
| Директива | Комментарий |
| define идентификатор #define идентификатор текст #define идентификатор (список, параметров) текст | Используется для замены часто используемых в программе констант, ключевых слов, операторов и выражений содержательными идентификаторами |
| #undef идентификатор | Отменяет текущее определение идентификатора |
| #defined идентификатор #defined (идентификатор) | Эта операция дает истинное (не равное 0) значение, если заданный идентификатор в данный момент определен |
| #include <путь> #include "путь" | Включает содержимое файла, заданного именем путь, в текущий компилируемый исходный файл. Путь представляет собой имя файла, которому может предшествовать спецификация каталога. Если спецификация пути заключена в двойные кавычки, то препроцессор ищет файл в текущем (рабочем) каталоге, а в случае его отсутствия поиск переносится в стандартные каталоги поиска, которые задаются командой PATH операционной системы и установками интегрированной среды Visual C++. Если же спецификация пути заключена в угловые скобки, то поиск осуществляется в стандартных каталогах |
| #if Константное_выражение | Условная подстановка фрагмента текста в зависимости от значения константного выражения: фрагмент подставляется, если оно истинно. Конец условно подставляемого фрагмента обязательно должен быть отмечен директивой #endif |
| #endif | Обозначает конец условно подставляемого фрагмента текста, начатого директивой #if |
| #ifdef идентификатор #ifndef идентификатор | Условная подстановка фрагмента текста в зависимости от того, определен ли идентификатор |
| #else | Позволяет организовать альтернативную ветвь условной подстановки определенной директивой #if. Между директивами #if и ttendif разрешается использовать только одну директиву #else |
| #elif константное_выражение | Сокращение от "else if". Используется как альтернативный вариант при построении вложенных директив #if |
| #line целая_константа "имя_файла" (необязательное) | Используется при генерации сообщений периода компиляции и сообщает компилятору об изменении порядка нумерации строк и необязательном изменении имени файла |
| #error текст | Служит для прерывания компиляции, поиска ошибок и выдачи сообщения вида:Fatal: имя_файла номер_строки Error directive:Текст |
| #pragma последовательность символов | Определяет зависящие от реализации указания компилятору (прагмы). Компилятор Visual C++ поддерживает следующие прагмы: alloc text, comment, optimize, auto_inline, component, inline_depth, pack, bss seg, data_seg, function, intrinsic, setlocale, code_seg, hdrstop, message, const seg, once, warning, inline recursion, check_stack, include_alias Например,директива #pragma warning(disable: 4305) предписывает компилятору не выдавать предупреждения при несовпадении типов данных |
Операции препроцессора
| Операция | Комментарий |
| # - операция подстановки строки | Используется перед параметром макроса, и предписывает вместо значения этого параметра подставлять его имя |
| ## - операция конкантенации | Объединяет лексемы и, удаляя все пробелы, образует новое имя. Одно из применений этой операции заключается в динамическом создании имен переменных и макроопределений. В макроопределении эта операция обрабатывается после подстановки параметров макроса |
| #@— операция подстановки символа | Рассматривает фактический параметр как отдельный символ, заключенный в одиночные кавычки |