Heim  >  Artikel  >  Backend-Entwicklung  >  Unterscheiden Sie zwischen konstanten C++-Ausdrücken, const und constexpr (mit Code)

Unterscheiden Sie zwischen konstanten C++-Ausdrücken, const und constexpr (mit Code)

php是最好的语言
php是最好的语言Original
2018-08-06 14:33:361867Durchsuche

Konstanter Ausdruck bezieht sich auf einen Ausdruck, dessen Wert sich nicht ändert und dessen Berechnungsergebnis während des Kompilierungsprozesses erhalten werden kann. Es kann zur Kompilierungszeit Ausdruck.

Beispiel 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;
}

Der obige Code kann normal kompiliert werden.

zeigt, dass das, was von const deklariert wird, nicht unbedingt ein konstanter Ausdruck ist!

Der neue C++11-Standard schreibt vor, dass Variablen als constexpr-Typ

deklariert werden dürfen, damit der Compiler überprüfen kann, ob der Wert der Variablen ein konstanter Ausdruck ist. Die Spezifikatordeklaration kann den Wert einer Funktion oder Variablen zur constexpr Kompilierzeit erhalten. Eine als constexpr deklarierte Variable muss eine Konstante sein und mit einem konstanten Ausdruck initialisiert werden.

Beispiel 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; Die Kompilierung meldet einen Fehler!

Beispiel 3:

Unterscheiden Sie zwischen konstanten C++-Ausdrücken, const und constexpr (mit Code)

#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;
}

Verwandte Artikel:

Teilen Sie mehrere Beispiele häufig verwendeter regulärer Ausdrücke in C#

PHP definiert Konstanten, den Unterschied zwischen const und define

Das obige ist der detaillierte Inhalt vonUnterscheiden Sie zwischen konstanten C++-Ausdrücken, const und constexpr (mit Code). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn