>  기사  >  백엔드 개발  >  C++ 상수 표현식, const 및 constexpr(코드 포함) 구별

C++ 상수 표현식, const 및 constexpr(코드 포함) 구별

php是最好的语言
php是最好的语言원래의
2018-08-06 14:33:361835검색

상수 표현식은 값이 변경되지 않는 표현식을 말하며 컴파일 과정 중 계산 결과를 얻을 수 있으며 컴파일 타임에 평가할 수 있습니다.

예제 1:

#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로 선언된 변수는 상수여야 하며 상수 표현식으로 초기화되어야 합니다.

예 2:

#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:

C++ 상수 표현식, const 및 constexpr(코드 포함) 구별

#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[&#39;y&#39;];  // 没问题,&#39;y&#39;的ASCII码为121,相当于 char arr2[121];

	char arr3[a4];   // 编译报错,因为a4不是常量表达式


	return 0;
}

관련 기사:

C#

PHP에서 정의한 상수는 const와 정의의 차이점입니다.

위 내용은 C++ 상수 표현식, const 및 constexpr(코드 포함) 구별의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.