偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

為什么 “auto a = 1;” 在C語(yǔ)言中可以編譯通過(guò)?

開(kāi)發(fā) 后端
auto 是一個(gè)古老的C語(yǔ)言關(guān)鍵字,它的代表含義是 “局部作用域”。 `auto a` 等價(jià)于 `auto int a`,而且函數(shù)里的變量定義默認(rèn)就是局部作用域的變量,所以在該例子中它也等價(jià)于`int a`.

問(wèn)題(來(lái)自lee77):

  1. int main(void)  
  2. {  
  3.     auto a = 1;  
  4.     return 0;  

把如上所示的代碼寫(xiě)在擴(kuò)展名為.c的文件里面,用MS Visual Studio 2012編譯器編譯的時(shí)候不會(huì)報(bào)錯(cuò)。我一直認(rèn)為,當(dāng)你使用.c的擴(kuò)展名時(shí),編譯器會(huì)按照C語(yǔ)言的語(yǔ)法來(lái)進(jìn)行編譯,而不是C++。而且,據(jù)我所知,不顯示定義類(lèi)型的auto變量聲明只有從C++11標(biāo)準(zhǔn)之后才被允許,在C++11中auto的含義是聲明該變量的類(lèi)型可以被初始化法式推導(dǎo)出來(lái)的。

這是不是意味著我的編譯器不嚴(yán)格遵守C語(yǔ)言的標(biāo)準(zhǔn),或者這段代碼實(shí)際上在C語(yǔ)言中是正確的?

***答案(來(lái)自larsmans):

auto 是一個(gè)古老的C語(yǔ)言關(guān)鍵字,它的代表含義是 “局部作用域”。 `auto a` 等價(jià)于 `auto int a`,而且函數(shù)里的變量定義默認(rèn)就是局部作用域的變量,所以在該例子中它也等價(jià)于`int a`.

這個(gè)關(guān)鍵字(auto)事實(shí)上是 C語(yǔ)言的前身——B語(yǔ)言 遺留下來(lái)的,B語(yǔ)言沒(méi)有基本類(lèi)型: 一切類(lèi)型都是 int, pointer to int, array of int . (*) 這些類(lèi)型的聲明只能是 `auto` 或者 `extern`。C語(yǔ)言繼承了 “任何類(lèi)型是int” 作為默認(rèn)法則,所以你能用如下方法聲明整型:

  1. auto a;  
  2. extern b;  
  3. static c; 

ISO C標(biāo)準(zhǔn) 拋棄了這個(gè)法則,但是當(dāng)然有一些編譯器為了向后兼容而接受這個(gè)法則。如果你還是覺(jué)得陌生,你應(yīng)該明白有一個(gè)類(lèi)似的的法則在下面語(yǔ)句中也生效:

  1. unsigned d; // actually unsigned int 

上式的代碼在現(xiàn)代的代碼中是很常見(jiàn)的。

C++11 復(fù)用了這個(gè)關(guān)鍵字(auto),既然它的原始含義很少被C++程序員使用,所以在C++11中被復(fù)用來(lái)作為類(lèi)型推導(dǎo)。 這樣的做法通常是安全的,因?yàn)?rdquo;一切類(lèi)型都是int”這個(gè)C語(yǔ)言的法則已經(jīng)被C++98標(biāo)準(zhǔn)中被拋棄; 唯一可能不安全的用法是 `auto T a`, 不過(guò)也沒(méi)人會(huì)這么做。()

(*) 在B語(yǔ)言中的字符串處理很有意思: 你會(huì)使用int數(shù)組和包裝多個(gè)字符在int數(shù)組的每個(gè)成員里。B語(yǔ)言事實(shí)上就是不同語(yǔ)法的BCPL(BCPL的變種)。

原文鏈接: stackoverflow   翻譯: 伯樂(lè)在線 - aszxqw

譯文鏈接: http://blog.jobbole.com/67040/

責(zé)任編輯:林師授 來(lái)源: 伯樂(lè)在線
相關(guān)推薦

2023-09-07 10:50:22

2012-06-12 09:47:17

C語(yǔ)言

2020-09-04 15:34:07

C編程語(yǔ)言開(kāi)發(fā)

2024-02-18 12:39:15

C++autodecltype

2010-01-11 15:29:13

引用C++語(yǔ)言

2025-06-26 02:29:00

C語(yǔ)言void*機(jī)制

2010-11-03 09:22:00

C語(yǔ)言

2010-01-22 15:14:37

學(xué)習(xí)C++

2023-01-30 15:41:10

Channel控制并發(fā)

2011-03-30 11:01:13

C語(yǔ)言隨機(jī)

2020-10-09 11:06:38

C語(yǔ)言桌面語(yǔ)法

2022-05-24 08:31:05

C語(yǔ)言檢查數(shù)組

2023-11-04 16:26:18

C語(yǔ)言數(shù)組

2015-05-25 15:31:56

C語(yǔ)言學(xué)習(xí)和使用 C 語(yǔ)言

2016-12-27 15:17:39

編程語(yǔ)言加減法

2022-07-29 08:25:02

volatileC語(yǔ)言原子

2023-01-12 08:52:50

GoroutinesGo語(yǔ)言

2011-12-25 15:35:05

ibmdwJavaC++

2010-03-11 19:16:32

Python語(yǔ)言

2011-05-25 13:22:05

PHPJSON
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)