«Static const» против «#define» против «enum»
В этой статье мы будем анализировать «static const», «#define» и «enum» . Эти три часто сбивают с толку, и выбор того, какой из них использовать, иногда может быть сложной задачей.
статическая константа
static const: «static const» в основном представляет собой комбинацию static (спецификатор хранилища) и const (квалификатор типа).
Статический: определяет время жизни и видимость / доступность переменной. Это означает, что если переменная объявлена как статическая переменная, она будет оставаться в памяти все время, пока выполняется программа, в то время как обычные или автоматические переменные уничтожаются, когда функция (где переменная была определена) завершается.
Const: квалификатор типа. Квалификатор типа используется для выражения дополнительной информации о значении через систему типов. Когда переменная инициализируется с использованием квалификатора типа const, она не принимает дальнейшее изменение своего значения.
Итак, комбинируя static и const, мы можем сказать, что когда переменная инициализируется с использованием static const, она будет сохранять свое значение до выполнения программы, а также не будет принимать никаких изменений в своем значении.
Синтаксис:
static const data_type name_of_variable = initial_value;
«Что такое #define»?
Его часто неверно истолковывают как программный оператор. Но на самом деле он устанавливает макрос . Макрос вызывает замену текста перед компиляцией. Чтобы узнать больше о макросах, обратитесь к статье macros_vs_function.
Синтаксис:
#define token [значение]
ПРИМЕЧАНИЕ: в токене не должно быть пробелов, значение может содержать пробелы.
Пример:
#define ll long long int
// C++ program to demonstrate // the use of #define #include <bits/stdc++.h> // defining long long int as => ll #define ll long long int // defining for loop #define f(i, a, b, c) for (ll i = a; i < b; i += c) using namespace std; // function to count to a given number void count(ll input) { // loop implemented using macros // for(long long int j=1; j<input+1;j+=1) f(j, 1, input + 1, 1) { cout << j << " " ; } cout << endl; } int main() { // ll will get replaced by // long long int ll num = 10; count(num); return 0; } |
1 2 3 4 5 6 7 8 9 10
Что такое перечисление?
Перечисление - это определяемый пользователем тип данных. Он используется для присвоения имен интегральным константам, чтобы улучшить читаемость кода. Для использования перечисления в C / C ++ используется ключевое слово «enum».
Синтаксис:
enum flag {константа1 = 2, константа2 = 3, константа3 = 4 ....};
«Enum» отличается от «#define» тем, что оно автоматически присваивает значения переменным. В предыдущем примере, если значения не были присвоены =>
перечисление {константа1, константа2, константаd3 ...}
Переменным будут автоматически присвоены значения (constant1 = 0, constant2 = 1, constant3 = 2…). Использование enum вместо макросов дает различные преимущества. Один из них - автоматическое присвоение значений.
// C++ program to demonstrate // the use of enum #include <bits/stdc++.h> using namespace std; int main() { // declaring weekdays data type enum weekdays { mon, tues, wed, thurs, fri, sat, sun }; // a variable named day1 holds the value of wed enum weekdays day1 = wed; // mon holds 0, tue holds 1 and so on cout << "The value stored in wed is :" << day1 << endl; // looping through the values of // defined integral constants for ( int i = mon; i <= sun; i++) cout << i << " " ; cout << endl; return 0; } |
В wed хранится значение: 2. 0 1 2 3 4 5 6
Дополнительные сведения о перечислении см. В статье «Перечисление (или перечисление) в C».