有很多不同的方法可以使变量为常数
- 使用const关键字: const关键字指定变量或对象值是常量,并且不能在编译时进行修改。
// C program to demonstrate const specifier #include
int main() { const int num = 1; num = 5; // Modifying the value return 0; } It will throw as error like: error: assignment of read-only variable ‘num’
- 使用enum关键字: Enumeration(或enum)是C和C++中用户定义的数据类型。它主要用于为整数常量分配名称,使程序易于阅读和维护。
// In C and C++ internally the default // type of 'var' is int enum VARS { var = 42 }; // In C++ 11 (can have any integral type): enum : type { var = 42; } // where mytype = int, char, long etc. // but it can't be float, double or // user defined data type.
注意:如上例所示,枚举的数据类型当然是有限的。
- 使用constexpr关键字:在C++中使用constexpr(不在C中)可用于将变量声明为保证的常量。但是,如果其初始值设定项不是常量表达式,则它将无法编译。
#include
int main() { int var = 5; constexpr int k = var; std::cout << k; return 0; } 上面的程序会抛出错误,即
error: the value of ‘var’ is not usable in a constant expression
因为变量’var’不是常数表达式。因此,为了使其恒定,我们必须使用const关键字声明变量“ var”。
- 使用宏:我们也可以使用宏来定义常量,但是有一个陷阱,
#define var 5