c auto型別說明符

2021-08-08 01:17:50 字數 1614 閱讀 2180

程式設計是常常需要把表示式的值賦給變數,這就要求子再宣告變數的時候清楚知道表示式的型別,然而要做到這一點並不容易,有時候根本做不到。為了解決問題,c++11標準引入了auto型別說明符,用它就能讓編譯器替我們去分析表示式的型別。

與原來那些型別說明符不同,auto讓編譯器通過初始值來推算變數型別。顯然,auto定義的變數必須要有初始值。

使用auto具有以下好處:

可靠性:如果表示式的型別發生更改,也能工作。

效能:確保不會進行轉換。

效率:**變得高效。

可用性:不必擔心型別名稱拼寫困難和拼寫有誤。

auto it=val1+val2;///有val1和val2相加的結果推斷it的型別。

auto i=0,*p=&i;///i是整數,p是整型指標

使用auto能在一條語句宣告多個變數。但是一條語句只能有乙個基本資料型別,所以該語句中所有變數的初始基本資料型別都必須一致

auto it=0,pp=3.14

///錯誤

編譯器推斷出的auto型別有時候和初始值型別並不完全一樣,編譯器會適當地改變結果型別使其更符合初始化規則,例如:

int

count =10 ;

int &countref = count ;

auto myauto = countref;

countref=11;

cout<<<" "; //print 11

myauto =12;

cout<

int i = 0;

const

int ci = i, &cr = ci;

auto b = ci;///b是乙個整數(ci的頂層const特性被忽略掉)

auto c = cr;///c是乙個整數(cr是ci的別名,ci本身是乙個頂層const)

auto d = &i;///d是乙個整型指標(整數的位址就是指向整數的指標)

auto e = &ci;///e是乙個指向整數常量的指標(對常量物件取位址是一種底層const)

還可以引用型別設定為auto,此時原來的初始化規則仍然適用:

auto &g = ci ; ///g是乙個整型常量引用,繫結到ci

auto &h = 42;/// 錯誤,不能為非常量引用繫結字面值

const auto &j = 42;/// 可以為常量引用繫結字面值

切記,符號 * 和 & 只能從屬於某乙個宣告,而非基本資料型別的一部分,因此初始值必須是同乙個型別:

auto k = ci, &l = i;///k是整數,l是整型引用

auto &m = ci, *p = &ci;///m是對整型常量的引用,p是指向整型常量的指標

auto &n = i,*pp = &ci;///錯誤!i的型別是int,而&ci的型別是const int

c auto型別說明符

文章 鏈結 程式設計是常常需要把表示式的值賦給變數,這就要求子再宣告變數的時候清楚知道表示式的型別,然而要做到這一點並不容易,有時候根本做不到。為了解決問題,c 11標準引入了auto型別說明符,用它就能讓編譯器替我們去分析表示式的型別。與原來那些型別說明符不同,auto讓編譯器通過初始值來推算變數...

C auto和decltype型別說明符

c auto和decltype型別說明符 有時候我們定義帶初始值的變數時,不知道或難以確定表示式的型別,我們可以用auto或decltype型別說明符,讓編譯器根據表示式自動推斷變數的型別。例如,我們不知道或難以確定val1和val2的型別,或者不知道它有沒有重新定義加法,使得結果型別改變,我們可以...

auto型別說明符

c 11新標準引入了auto型別說明符 用它能讓編譯器替我們分析表示式所屬的型別 auto讓編譯器通過初始值來推算出標量的型別。顯然auto定義的變數必須有初始值 auto item vall val2 item的型別通過val2和val1的相加的結果得出 使用auto也能在一條語句中宣告多個變數 ...