91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

如何區分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

安顺市| 永济市| 南靖县| 东至县| 天峻县| 广元市| 淮安市| 正宁县| 大厂| 赤峰市| 牙克石市| 台南市| 苍山县| 彰化县| 衡山县| 米易县| 大同市| 余姚市| 军事| 昌平区| 八宿县| 于田县| 米脂县| 贵阳市| 黄浦区| 沭阳县| 循化| 万全县| 阿尔山市| 昌乐县| 延寿县| 姜堰市| 准格尔旗| 徐水县| 萨嘎县| 垦利县| 镇沅| 建阳市| 腾冲县| 五原县| 项城市|