自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

關(guān)于C編程語言,幾乎沒有人知道的事

開發(fā) 后端
首先話不多說,直接給您去介紹咯。在C語言中,您可以在類型轉(zhuǎn)換中,運(yùn)算符內(nèi)部,函數(shù)聲明中聲明新類型。sizeof

首先話不多說,直接給您去介紹咯。

 

[[345215]]

在C語言中,您可以在類型轉(zhuǎn)換中,運(yùn)算符內(nèi)部,函數(shù)聲明中聲明新類型。sizeof

  1. int a = sizeof(enum E { A, B, C }) + (enum X { D, E, F }) 0;  
  2. enum E e = B;  
  3. int b = e + F;  

在C循環(huán)中,“頭”和循環(huán)體是兩個(gè)單獨(dú)的(嵌套的)作用域

  1. for (int i = 0; i < 10; ++i)  
  2. {   int i = 42; // <-C語言中的OK,聲明其他局部變量  
  3. }  

這不同于C ++,后者兩者都形成一個(gè)范圍。

可以在C中進(jìn)行[遞歸]調(diào)用main

在C語言中,可以在聲明中顯式地重復(fù)cv限定詞

  1. const const const const int i = 42; 

在C中,您可以在相同的翻譯單元中一次又一次地定義相同的文件作用域?qū)ο?,只要這些定義仍然是暫定的即可(不要多次包含初始化器)

  1. int i;  
  2. int i;  
  3. int i, i, i, i;  

與流行的看法相反,C不支持不同指針類型之間以及整數(shù)和指針類型之間的隱式轉(zhuǎn)換

  1. int *p = 0;  
  2. double *pd = p; //<-在C中不允許 
  3. char *pc = 123;// <-在C中不允許 

但是支持隱式的指針往返轉(zhuǎn)換void *。

將運(yùn)算符應(yīng)用于可變修改后的類型時(shí),將sizeof在運(yùn)行時(shí)對(duì)其進(jìn)行評(píng)估

  1. int i = 0;  
  2.   sizeof(int [++ i]); //運(yùn)行時(shí)`sizeof`將使`i`遞增  
  3.    int a [20];  
  4.   sizeof(a [++ i]); //編譯時(shí)`sizeof`不會(huì)使`i`遞增  

typedef用C -declaration實(shí)際上可以生成可執(zhí)行代碼,如果聲明為可變類型(一個(gè)VLA)。因此,繞過該聲明進(jìn)入該聲明的范圍是非法的typedef

  1. goto skip;  
  2.  int n = 42;  
  3. typedef int A[n];  
  4.  skip:;  

即使main應(yīng)該聲明為返回int,也不需要顯式地return從中進(jìn)行任何操作int main()。如果控制從末尾流出main,則其行為就像return 0;

運(yùn)算符sizeof有兩種獨(dú)立的語法:一種用于類型,另一種用于表達(dá)式。后者沒有()圍繞其論點(diǎn)

  1. int a;  
  2. sizeof a; // 不需要在`a`附近使用`()` 

從C99語句(如if,等)開始for,while創(chuàng)建自己的隱式塊。在C99塊之前,僅由的顯式對(duì)創(chuàng)建{}。

標(biāo)準(zhǔn)C從未允許人們?cè)诼暶髦型耆÷詃ecl-specifier-seq 。即使在具有“隱式int”規(guī)則的C89 / 90中,也無法將函數(shù)聲明為foo()。你可以做extern foo()或者const foo(),例如,而不是只foo()。

帶空的函數(shù)聲明()是K&R樣式的聲明。不建議使用K&R樣式的聲明。如果您的函數(shù)沒有參數(shù),則將其聲明為(void),而不是()。

函數(shù)聲明和函數(shù)原型不是一回事。在現(xiàn)代C語言中,需要使用函數(shù)聲明。但是功能原型不是。

即使在函數(shù)參數(shù)列表中,諸如int *array和的聲明int array[]通常是“等效的”,后一種形式仍要求數(shù)組元素類型完整,而前一種則不需要

  1. struct Incomplete;  
  2. void foo(struct Incomplete *array);  
  3. void bar(struct Incomplete array[]); 

在函數(shù)參數(shù)列表中聲明指針時(shí),可以將指針本身聲明為 const

  1. void foo(int *const array); 

在C89 / 90中,使用參數(shù)聲明的“等效”數(shù)組形式時(shí),以前不可能聲明相同類型的常數(shù)。但是,由于C99,可以通過const在[]

  1. void bar(int array[const]); // 與ʻint * const array`相同 

使用函數(shù)參數(shù)聲明的數(shù)組形式時(shí),數(shù)組的大小通常無關(guān)緊要

  1. void foo(int array[5]); //等同于`int array []`。`5`被忽略。 

但是,當(dāng)size帶有關(guān)鍵字時(shí),static它充當(dāng)編譯器的提示。它說實(shí)際的數(shù)組至少會(huì)那么大。它可能/將改善編譯器優(yōu)化

  1. void foo(int array [static 5]);   
  2. //從類型上講,它仍然等效于`int array []`  
  3. //但是編譯器會(huì)提示  

聲明為的位字段int不一定是帶符號(hào)的。這是C語言中的一個(gè)上下文,其中plainint不一定與相同signed int。一個(gè)int位字段可能被符號(hào)或無符號(hào)-這個(gè)行為應(yīng)該是實(shí)現(xiàn)定義的。因此,始終明確指定您的意圖始終是一個(gè)好習(xí)慣:將位字段明確聲明為signedor unsigned,而不是簡(jiǎn)單聲明int。

do … while是唯一以。結(jié)尾的迭代語句形式;。

在C語言中可以對(duì)類型為Object的對(duì)象進(jìn)行非定義聲明 void

  1. extern void v; 

但是,由于類型不完整,因此無法為該聲明提供匹配的定義void。

函數(shù)參數(shù)列表中提到的未知結(jié)構(gòu)類型被視為新類型的聲明。但是,此類型的范圍僅限于該函數(shù)聲明。同一功能的下一個(gè)聲明將不可見或不知道它。例如,以下聲明序列乍一看“看起來不錯(cuò)”,但實(shí)際上是無效的

  1. // 此時(shí)未聲明“ struct S”類型 
  2. void foo(struct S *p);  
  3. void foo(struct S *p)  
  4. {  
  5. }  

struct S第一個(gè)聲明提到的類型是原型的局部變量,與第二個(gè)聲明完全無關(guān)struct S。因此,這些函數(shù)聲明是沖突的。

責(zé)任編輯:未麗燕 來源: 今日頭條
相關(guān)推薦

2023-06-09 09:36:31

C++程序員語言

2013-01-10 12:50:38

移動(dòng)游戲人才

2023-03-29 18:37:52

2010-03-03 17:01:27

Linux Ubunt

2022-03-11 07:47:56

防御性編程互聯(lián)網(wǎng)

2016-11-01 23:16:52

光纖光纖線纜

2019-05-27 11:06:21

貿(mào)易戰(zhàn)

2015-09-16 10:48:57

Python庫(kù)

2014-11-18 15:20:03

.NET

2021-06-02 05:43:36

比特幣虛擬貨幣區(qū)塊鏈

2020-06-05 10:36:30

云計(jì)算容器安全

2018-01-01 23:28:37

JOIN維度數(shù)據(jù)分析

2023-07-11 08:22:09

2009-04-24 08:21:52

蘋果喬布斯董事會(huì)

2009-02-19 10:31:09

2011-05-04 16:14:30

webOSPalm

2011-07-14 16:21:34

WPS Online

2023-08-16 15:57:53

2015-11-05 18:03:15

虛擬化云計(jì)算資源池

2023-09-14 13:13:51

iPhone 15蘋果AI
點(diǎn)贊
收藏

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