在本文中,我们将分析“静态const”,“#define”和“枚举” 。这三个常常令人困惑,选择使用哪个有时可能是一项艰巨的任务。
静态常量
static const: “ static const”基本上是static(存储说明符)和const(类型限定符)的组合。
静态:确定变量的生存期和可见性/可访问性。这意味着,如果将变量声明为静态变量,则它将在程序运行时始终保留在内存中,而当函数(定义了变量的地方)结束时,普通或自动变量将被破坏。
常量:是类型限定符。类型限定符用于通过类型系统表达有关值的附加信息。当使用const类型限定符初始化变量时,它将不接受其值的进一步更改。
因此,将static和const结合使用,可以说,当使用static const初始化变量时,它将保留其值直到程序执行为止,并且也将不接受其值的任何更改。
句法:
static const data_type name_of_variable = initial_value;
// C++ program to demonstrate the use of
// static const
#include
using namespace std;
// function to add constant value to input
int addConst(int input)
{
// value = 5 will be stored in
// memory even after the
// execution of the
// function is finished
static const int value = 5;
// constant_not_static will
// not accept change in value
// but it will get destroyed
// after the execution of
// function is complete
const int constant_not_static = 13;
input += value;
// value++; ==> this statement will produce error
return input;
}
int main()
{
int input = 10;
cout << addConst(input) << endl;
return 0;
}
15
“ #define”是什么?
它经常被误解为编程语句。但这实际上是建立了一个宏。宏会导致文本在编译发生之前被替换。要了解有关宏的更多信息,请参阅macros_vs_function文章。
句法:
#define token [value]
注意:令牌不能有任何空格,值可以有空格。
例子:
#define ll long long int
// C++ program to demonstrate
// the use of #define
#include
// 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
1 2 3 4 5 6 7 8 9 10
什么是枚举?
枚举是用户定义的数据类型。它用于为整数常量分配名称,以提高代码的可读性。要使用枚举,在C / C++中使用“ enum”关键字。
句法:
enum flag{constant1= 2, constant2=3, constant3=4....};
使“枚举”与“ #define”不同的原因是它会自动将值分配给变量。在前面的示例中,如果未分配值=>
enum{constant1, constant2, constantd3...}
变量将被自动分配值(常数1 = 0,常数2 = 1,常数3 = 2…)。使用枚举而不是宏有很多优点。其中之一是自动分配值。
// C++ program to demonstrate
// the use of enum
#include
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;
}
The value stored in wed is :2
0 1 2 3 4 5 6
有关枚举的更多信息,请参见C文章中的Enumeration(或enum)。