C++ резервирует набор из 92 слов (по состоянию на C++20) для собственного использования. Эти слова называются ключевыми словами (keywords, или зарезервированными словами), и каждое из этих ключевых слов имеет в языке C++ особое значение.
Ниже приведен список всех ключевых слов C++ (до C++20):
alignas alignof and and_eq asm auto bitand bitor bool break case catch char char8_t (начиная с C++20) char16_t char32_t class compl concept (начиная с C++20) const consteval (начиная с C++20) constexpr constinit (начиная с C++20) const_cast continue co_await (начиная с C++20) co_return (начиная с C++20) co_yield (начиная с C++20) decltype default delete do double dynamic_cast else enum explicit export extern false float for friend goto if inline |
int long mutable namespace new noexcept not not_eq nullptr operator or or_eq private protected public register reinterpret_cast requires (начиная с C++20) return short signed sizeof static static_assert static_cast struct switch template this thread_local throw true try typedef typeid typename union unsigned using virtual void volatile wchar_t while xor xor_eq |
Electron JS Заголовок программы | Безрамочное окно
Ключевые слова, отмеченные (C++20), были добавлены в C++20. Если ваш компилятор не совместим с C++20 (или имеет функциональные возможности C++20, но по умолчанию они отключены), эти ключевые слова могут не работать.
C++ также определяет специальные идентификаторы: override , final , import и module . Они имеют особое значение при использовании в определенных контекстах, но не зарезервированы.
Вы уже встречали некоторые из этих ключевых слов, включая int и return . Эти ключевые слова и специальные идентификаторы вместе с набором операторов определяют весь язык C++ (за исключением команд препроцессора). Поскольку ключевые слова и специальные идентификаторы имеют особое значение, ваши IDE, скорее всего, изменят цвет текста этих слов (часто на синий), чтобы выделить их среди других идентификаторов.
К тому времени, когда вы пройдете эту серию обучающих статей, вы поймете, что делают почти все эти слова!
Правила именования идентификаторов
Напоминаем, что имя переменной (или функции, типа или другого типа элемента) называется идентификатором. C++ дает вам большую гибкость для именования идентификаторов по вашему желанию. Однако есть несколько правил, которые при именовании идентификаторов необходимо соблюдать:
- идентификатор не может быть ключевым словом (ключевые слова зарезервированы);
- идентификатор может состоять только из букв (нижнего или верхнего регистра), цифр и символов подчеркивания. Это означает, что имя не может содержать другие символы (кроме подчеркивания) или пробельные символы (пробелы или табуляции);
- идентификатор должен начинаться с буквы (нижний или верхний регистр) или символа подчеркивания, он не может начинаться с цифры;
- C++ чувствителен к регистру и, таким образом, различает строчные и прописные буквы ( nvalue отличается от nValue и от NVALUE ).
Лучшие практики именования идентификаторов
Теперь, когда вы знаете, как можно называть переменные, давайте поговорим о том, как желательно называть переменные (или функции).
Структура программы. Операторы ввода/вывода
Во-первых, в C++ принято, что имена переменных должны начинаться со строчной буквы. Если имя переменной состоит из одного слова, следует писать его строчными буквами полностью.
int value; // правильно int Value; // неправильно (должно начинаться со строчной буквы) int VALUE; // неправильно (должно начинаться со строчной буквы) int VaLuE; // неправильно (обратитесь к психиатру);)
Чаще всего имена функций также начинаются со строчной буквы (хотя по этому поводу есть некоторые разногласия). Мы будем следовать этому соглашению, поскольку функция main (которая должна быть во всех программах) начинается со строчной буквы, как и все функции в стандартной библиотеке C++.
Имена идентификаторов, начинающиеся с заглавной буквы, обычно используются для определяемых пользователем типов (таких как структуры, классы и перечисления, о которых мы поговорим позже).
Если имя переменной или функции состоит из нескольких слов, существует два распространенных соглашения: разделение слов подчеркиванием (называемое snake_case, «змеиная нотация») и написание последующих слов с заглавной буквы (называемое camelCase, «верблюжья нотация», поскольку заглавные буквы выступают, как горбы на верблюде).
int my_variable_name; // правильно (разделены подчеркиванием / snake_case) int my_function_name(); // правильно (разделены подчеркиванием / snake_case) int myVariableName; // правильно (с заглавными буквами / CamelCase) int myFunctionName(); // правильно (с заглавными буквами / CamelCase) int my variable name; // неправильно (пробелы не допускаются) int my function name(); // неправильно (пробелы не допускаются) int MyVariableName; // допустимо, но неправильно (должно начинаться со строчной буквы) int MyFunctionName(); // допустимо, но неправильно (должно начинаться со строчной буквы)
В этом руководстве мы обычно будем использовать верблюжью нотацию потому, что ее легче читать (подчеркивание проще ошибочно принять за пробел в плотных блоках кода). Но часто можно увидеть и то, и другое – стандартная библиотека C++ использует подход с подчеркиваниями как для переменных, так и для функций. Иногда вы можете увидеть сочетание двух подходов: подчеркивания, используемые для переменных, и заглавные буквы, используемые для функций.
Стоит отметить, что если вы работаете с чужим кодом, обычно считается, что лучше соответствовать стилю кода, в котором работаете, чем строго следовать соглашениям об именах, изложенным выше.
Лучшая практика
При работе с существующим кодом программы используйте соглашения об именовании этой программы (даже если они не соответствуют передовым современным методам). При написании новых программ используйте передовой опыт.
Во-вторых, вам следует избегать именования идентификаторов, начинающихся с подчеркивания, поскольку эти имена обычно зарезервированы для использования ОС, библиотек и/или компилятора.
В-третьих, ваши идентификаторы должны четко указывать, что означает значение, которое они содержат (особенно, если единицы не очевидны). Идентификаторы должны быть названы таким образом, чтобы помочь тем, кто не имеет представления о вашем коде, понять его как можно быстрее. Через 3 месяца, когда вы снова посмотрите на исходный код своей же программы, и уже забыли, как она работает, вы поблагодарите себя за то, что выбрали осмысленные имена переменных.
Однако присвоение тривиальной переменной слишком сложного имени затрудняет общее понимание того, что делает программа, почти так же, как присвоение неадекватного имени широко используемому идентификатору. Поэтому хорошее практическое правило – делать длину идентификатора пропорциональной тому, насколько широко он используется. Идентификатор с тривиальным использованием может иметь короткое имя (например, такое как i ). Идентификатор, который используется более широко (например, функция, которая вызывается из разных мест в программе), должен иметь более длинное и описательное имя (например, вместо open попробуйте openFileOnDisk ).
int ccount | Плохо | Что означает c перед « count »? |
int customerCount | Хорошо | Понятно, что мы считаем. |
int i | Одно из двух | Хорошо, если использование тривиально, в противном случае – плохо. |
int index | Одно из двух | Хорошо, если очевидно, что мы индексируем. |
int totalScore | Одно из двух | Хорошо, если оценивается только одна вещь, иначе слишком неоднозначно. |
int _count | Плохо | Не начинайте имена с подчеркивания. |
int count | Одно из двух | Хорошо, если очевидно, что мы считаем. |
int data | Плохо | Какие данные? |
int time | Плохо | Это в секундах, минутах или часах? |
int minutesElapsed | Хорошо | Описательное имя. |
int value1, value2 | Одно из двух | Трудно различить эти две переменные. |
int numApples | Хорошо | Описательное имя. |
int monstersKilled | Хорошо | Описательное имя. |
int x, y | Одно из двух | Хорошо, если использование тривиально, в противном случае – плохо. |
В любом случае избегайте сокращений. Хотя они сокращают время, необходимое для написания кода, они затрудняют чтение кода. Даже если сокращение однозначно, читателю нужно время, чтобы понять, что вы имели в виду. Код читается чаще, чем пишется, время, которое вы сэкономили при написании кода, – это время, которое каждый читатель, включая вас в будущем, потратит на его чтение. Если вы хотите писать код быстрее, воспользуйтесь функцией автодополнения в редакторе.
Наконец, большое значение может иметь уточняющий комментарий. Например, предположим, что мы объявили переменную с именем numberOfChars , которая должна хранить количество символов во фрагменте текста. Текст « Hello World! » содержит 10, 11 или 12 символов? Это зависит от того, учитываем ли мы пробелы и знаки препинания. Вместо того чтобы называть переменную numberOfCharsIncludingWhitespaceAndPunctuation , что довольно длинно, правильно размещенный комментарий в строке объявления должен помочь пользователю понять, что это:
// содержит количество символов в тексте, включая пробелы и знаки препинания! int numberOfChars;
Небольшой тест
Вопрос 1
В зависимости от того, как вы хотели бы назвать переменную, укажите, является ли имя каждой переменной правильным (следует соглашению), неправильным (не соответствует соглашению) или недопустимым (не будет компилироваться) и почему.
int sum; // предположим, что мы подводим итоги
Источник: radioprog.ru
Кроссворд по структуре программы на Pascal
1. Ключевое слово, с которого начинается заголовок программы.
3. Оператор выбора.
4. Функции, дробная часть.
5. Оператор ввода.
6. Цикл с предусловием.
7. Цикл с постусловием.
8. Конец программы.
1. Цикл со счетчиком
3. Начало основного блока программы
4. Оператор вывода
6. Раздел подключаемых модулей
7. Квадратный корень
8. Абсолютное значение величины (|x|).
Содержимое разработки
По горизонтали:
1 . Ключевое слово, с которого начинается заголовок программы
3. Оператор выбора
4. Функция, дробная часть
5. Оператор ввода
6. Цикл с предусловием
7. Цикл с постусловием
8. Конец программы
По вертикали:
1. Цикл со счетчиком
3. Начало основного блока программы
4. Оператор вывода
6. Раздел подключаемых модулей
7. Квадратный корень
8. Абсолютное значение величины (|x|)
-82%
Источник: videouroki.net
Ключевые слова в C
Ключевыми словами называются слова, которые имеют особое значение для компилятора C. На 7 и 8 этапах трансляции идентификатор не может иметь такое же написание и регистр записи, что и ключевое слово C. Дополнительные сведения см. в разделе Этапы преобразованияСправочника по препроцессору. Дополнительные сведения об идентификаторах см. в этом разделе.
Ключевые слова стандартного языка C
В языке C используются следующие ключевые слова:
auto
break
case
char
const
continue
default
do
double
else
enum
extern
float
for
goto
if
inline 1, a
int
long
register
restrict 1, a
return
short
signed
sizeof
static
struct
switch
typedef
union
unsigned
void
volatile
while
_Alignas 2, a
_Alignof 2, a
_Atomic 2, b
_Bool 1, a
_Complex 1, b
_Generic 2, a
_Imaginary 1, b
_Noreturn 2, a
_Static_assert 2, a
_Thread_local 2, b
1 Ключевые слова, представленные в стандарте ISO C99.
2 Ключевые слова, представленные в стандарте ISO C11.
a Начиная с Visual Studio 2019 версии 16.8 эти ключевые слова поддерживаются в коде, скомпилированном как C, если указаны параметр компилятора /std:c11 или /std:c17 .
b Начиная с Visual Studio 2019 версии 16.8 эти ключевые слова распознаются, но не поддерживаются компилятором в коде, скомпилированном как C, если указаны параметр компилятора /std:c11 или /std:c17 .
Переопределить ключевые слова невозможно. Но с помощью директив препроцессора C можно определить текст, который будет использоваться вместо ключевых слов.
Ключевые слова C для систем Microsoft
Стандарты ANSI и ISO C позволяют зарезервировать идентификаторы, начинающиеся с двух символов подчеркивания, для реализаций компилятора. Поэтому в системах Microsoft действует соглашение, что используемые в них ключевые слова начинаются с двух символов подчеркивания. Эти слова невозможно использовать как имена идентификаторов. Описание правил именования идентификаторов, включая использование двойных знаков подчеркивания, см. в статье об идентификаторах.
Компилятор Microsoft C распознает следующие ключевые слова и особые идентификаторы.
__asm 5
__based 3, 5
__cdecl 5
__declspec 5
__except 5
__fastcall
__finally 5
__inline 5
__int16 5
__int32 5
__int64 5
__int8 5
__leave 5
__restrict
__stdcall 5
__try 5
dllexport 4
dllimport 4
naked 4
static_assert 6
thread 4
3 Ключевое слово __based имеет ограниченное применение: в компиляциях для 32- и 64-разрядных платформ.
4 Если эти ключевые слова используются с ключевым словом __declspec , они являются особыми идентификаторами. В других контекстах они могут использоваться без ограничений.
5 Для совместимости с предыдущими версиями эти ключевые слова доступны как с двумя символами подчеркивания в начале, так и с одним при включении расширений Microsoft.
6 Если файл не включен, компилятор Microsoft Visual C сопоставляет static_assert с ключевым словом C11 _Static_assert .
Расширения Microsoft по умолчанию включены. Чтобы помочь в создании переносимого кода, расширения Microsoft можно отключить, указав во время компиляции параметр /Za (Отключить расширения языка) . При этом некоторые ключевые слова для систем Microsoft будут отключены.
Когда расширения Microsoft включены, в программах можно использовать перечисленные выше ключевые слова. Чтобы соответствовать стандарту языка, большинству этих ключевых слов предшествует двойное подчеркивание. Четыре исключения, dllexport , dllimport , naked и thread , используются только с ключевым словом __declspec и поэтому не требуют двойного знака подчеркивания. Для всех остальных ключевых слов поддерживаются версии с одним символом подчеркивания. Это сделано для обеспечения обратной совместимости.
Источник: learn.microsoft.com