상수 표현식은 값이 변경되지 않는 표현식을 말하며 컴파일 과정 중 계산 결과를 얻을 수 있으며 컴파일 타임에 평가할 수 있습니다.
#include <iostream> using namespace std; int main() { const int a1 = 10; // a1是常量表达式。 const int a2 = a1 + 20; // a2是常量表达式 int a3 = 5; // a3不是常量表达式 const int a4 = a3; // a4不是常量表达式,因为a3程序的执行到达其所在的声明处时才初始化,所以变量a4的值程序运行时才知道。但编译没问题! return 0; }위 코드는 정상적으로 컴파일될 수 있습니다. const로 선언된 것이 반드시 상수 표현식은 아니라는 것을 보여줍니다! 새로운 C++11 표준에서는 변수를 constexpr 유형
으로 선언하여 컴파일러가 변수 값이 상수 표현식인지 확인할 수 있도록 규정하고 있습니다. 지정자 선언은 constexpr
컴파일 타임에서 함수나 변수의 값을 얻을 수 있습니다. constexpr로 선언된 변수는 상수여야 하며 상수 표현식으로 초기화되어야 합니다.
#include <iostream> using namespace std; int main() { const int a1 = 10; // a1是常量表达式。 const int a2 = a1 + 20; // a2是常量表达式 int a3 = 5; // a3不是常量表达式 constexpr int a4 = a3; // a4不是常量表达式,因为a3程序的执行到达其所在的声明处时才初始化,所以变量a4的值程序运行时才知道。编译报错! return 0; }constexpr int a4 = a3; 컴파일하면 오류가 보고됩니다! 예제 3:
#include <iostream> using namespace std; int main() { const int a1 = 10; // a1是常量表达式。 const int a2 = a1 + 20; // a2是常量表达式 int a3 = 5; // a3不是常量表达式 const int a4 = a3; // a4不是常量表达式,因为a3程序的执行到达其所在的声明处时才初始化,所以变量a4的值程序运行时才知道。编译报错! char arr1[a2]; // 没问题 char arr2['y']; // 没问题,'y'的ASCII码为121,相当于 char arr2[121]; char arr3[a4]; // 编译报错,因为a4不是常量表达式 return 0; }관련 기사:
PHP에서 정의한 상수는 const와 정의의 차이점입니다.
위 내용은 C++ 상수 표현식, const 및 constexpr(코드 포함) 구별의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!