中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何區分C++常量表達式、const、constexpr

發布時間:2021-09-06 14:37:27 來源:億速云 閱讀:148 作者:小新 欄目:編程語言

這篇文章主要介紹如何區分C++常量表達式、const、constexpr,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

常量表達式是指值不會改變且在編譯過程中就能夠得到計算結果的表達式,能在編譯時求值的表達式。

例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['y'];  // 沒問題,'y'的ASCII碼為121,相當于 char arr2[121];

	char arr3[a4];   // 編譯報錯,因為a4不是常量表達式


	return 0;
}

以上是“如何區分C++常量表達式、const、constexpr”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

贵阳市| 漯河市| 资阳市| 年辖:市辖区| 阳东县| 平塘县| 鄂托克前旗| 乐清市| 崇文区| 越西县| 灌南县| 门头沟区| 南阳市| 雅安市| 稷山县| 溧阳市| 茶陵县| 汉源县| 屯昌县| 吐鲁番市| 阳原县| 鸡东县| 土默特右旗| 增城市| 龙口市| 新巴尔虎左旗| 利辛县| 兰溪市| 岳阳县| 兴和县| 阿图什市| 宜宾县| 平舆县| 江达县| 双柏县| 景东| 西乌珠穆沁旗| 安化县| 南溪县| 绥德县| 张家港市|