Maison  >  Article  >  développement back-end  >  Distinguer les expressions constantes C++, const et constexpr (avec code)

Distinguer les expressions constantes C++, const et constexpr (avec code)

php是最好的语言
php是最好的语言original
2018-08-06 14:33:361864parcourir

L'expression constante fait référence à une expression dont la valeur ne changera pas et le résultat du calcul peut être obtenu pendant le processus de compilation. Il peut être évalué au au moment de la compilation expression.

Exemple 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;
}
Le code ci-dessus peut être compilé normalement.

montre que ce qui est déclaré par const n'est pas forcément une expression constante !

Le nouveau standard C++11 stipule que les variables peuvent être déclarées comme type constexpr

afin que le compilateur puisse vérifier si la valeur de la variable est une expression constante . La déclaration du spécificateur peut obtenir la valeur d'une fonction ou d'une variable au constexpr moment de la compilation . Une variable déclarée comme constexpr doit être une constante et doit être initialisée avec une expression constante.

Exemple 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; La compilation signalera une erreur !

Exemple 3 :

Distinguer les expressions constantes C++, const et constexpr (avec 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;
}
Articles connexes :

Partagez plusieurs exemples d'expressions régulières couramment utilisées en C#

PHP définit les constantes, la différence entre const et définir

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn