Операция | Описание | Пример |
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) предписывает компилятору не выдавать предупреждения при несовпадении типов данных |
Операции препроцессора
Операция | Комментарий |
# - операция подстановки строки | Используется перед параметром макроса, и предписывает вместо значения этого параметра подставлять его имя |
## - операция конкантенации | Объединяет лексемы и, удаляя все пробелы, образует новое имя. Одно из применений этой операции заключается в динамическом создании имен переменных и макроопределений. В макроопределении эта операция обрабатывается после подстановки параметров макроса |
#@— операция подстановки символа | Рассматривает фактический параметр как отдельный символ, заключенный в одиночные кавычки |