C++ 變量的聲明和初始化方式示例詳解
C++ 變量的聲明和初始化方式
下面是一些示例,展示了不同的初始化方式:
double r(3.0); // 直接初始化
double s = 3.0; // 復制初始化
double t{3.0}; // 列表初始化 (C++11 起)
這三種方式都將創(chuàng)建一個 double
類型的變量,并將其初始化為 3.0
。
這三種初始化方式在語義上有所不同:
直接初始化 (double r(3.0);
): 這種方式在 C++ 中被稱為直接初始化。它表示創(chuàng)建一個名為 r
的 double
類型變量,并將其初始化為 3.0
。直接初始化的語法使用圓括號。
復制初始化 (double s = 3.0;
): 這是一種傳統(tǒng)的初始化方式,稱為復制初始化。它也表示創(chuàng)建一個名為 s
的 double
類型變量,并將其初始化為 3.0
。在復制初始化中,使用等號 =
將值賦給變量。
列表初始化 (double t{3.0};
): 這是 C++11 引入的一種新的初始化方式,也被稱為初始化列表。它使用花括號 {}
來初始化變量。列表初始化不僅可以用于變量聲明,還可以用于數(shù)組、結(jié)構(gòu)體、類等類型的初始化。列表初始化在一些情況下會更嚴格,例如對于窄化轉(zhuǎn)換的檢查。
但在 C++ 中,直接初始化和復制初始化之間有一些微妙的區(qū)別。通常,直接初始化更加高效并且可以用于更多的情況,因為它在聲明的同時就執(zhí)行了初始化操作。
在大多數(shù)情況下,這三種初始化方式都可以使用,并且它們在結(jié)果上是等效的。然而,列表初始化在某些情況下會更加嚴格,并且在使用窄化轉(zhuǎn)換時會進行檢查,這使得它在某些情況下更加安全。
窄化轉(zhuǎn)換案例:
double d = 10.5; int i = d; // 復制初始化,窄化轉(zhuǎn)換,可能丟失精度 int j = {10.5}; // 列表初始化,會導致編譯錯誤,因為窄化轉(zhuǎn)換是不允許的
復制初始化時,將 double
類型的值賦給 int
類型的變量 i
,這會導致窄化轉(zhuǎn)換,可能會丟失精度。
列表初始化時,將 10.5
賦給 int
類型的變量 j
,這也會導致窄化轉(zhuǎn)換,但是列表初始化對窄化轉(zhuǎn)換進行了檢查,因此會導致編譯錯誤。列表初始化方式在這種情況下會更加嚴格,以避免可能導致錯誤的窄化轉(zhuǎn)換。
到此這篇關(guān)于C++ 變量的聲明和初始化方式的文章就介紹到這了,更多相關(guān)C++ 變量的聲明和初始化內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++基于字符串實現(xiàn)大數(shù)相乘問題的代碼詳解
在實際編程中,我們經(jīng)常會遇到需要處理大整數(shù)的情況,由于編程語言中內(nèi)置整數(shù)類型有其表示范圍的限制,當需要處理的整數(shù)超出這些范圍時,就不能直接使用內(nèi)置類型進行計算,所以本文給大家介紹了相關(guān)的解決方法,需要的朋友可以參考下2025-03-03淺談stringstream 的.str()正確用法和清空操作
下面小編就為大家?guī)硪黄獪\談stringstream 的.str()正確用法和清空操作。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-12-12C語言實現(xiàn)BMP格式圖片轉(zhuǎn)化為灰度
這篇文章主要為大家詳細介紹了C語言實現(xiàn)BMP格式圖片轉(zhuǎn)化為灰度,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-10-10C++?OpenGL實現(xiàn)旋轉(zhuǎn)立方體的繪制
這篇文章主要主要為大家詳細介紹了如何利用C++和OpenGL實現(xiàn)旋轉(zhuǎn)立方體的繪制,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起動手嘗試一下2022-07-07C++實現(xiàn)字符串轉(zhuǎn)整數(shù)(atoi)的代碼詳解
在編程中,經(jīng)常會遇到將字符串轉(zhuǎn)換為整數(shù)的需求,就像標準庫中的 atoi 函數(shù)一樣,本文給大家介紹了C++中字符串轉(zhuǎn)整數(shù)(atoi)的實現(xiàn)與解析,并有詳細的代碼示例供大家參考,需要的朋友可以參考下2025-04-04