中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

C語言中的關鍵字怎么用

發布時間:2022-04-01 17:09:28 來源:億速云 閱讀:169 作者:iii 欄目:編程語言

本篇內容介紹了“C語言中的關鍵字怎么用”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

1.關鍵字變更歷史

1999年12月16日,ISO推出了C99標準,該標準新增了5個C語言關鍵字:

inline restrict _Bool _Complex _Imaginary(注意bool 從來不是C語言的關鍵字)

2011年12月8日,ISO發布C語言的新標準C11,該標準新增了7個C語言關鍵字:

_Alignas _Alignof _Atomic _Static_assert _Noreturn _Thread_local _Generic

2.關鍵字列表

auto :聲明自動變量
break:跳出當前循環
case:開關語句分支
char :聲明字符型變量或函數返回值類型
const :聲明只讀變量
continue:結束當前循環,開始下一輪循環
default:開關語句中的“其它”分支
do :循環語句的循環體
double :聲明雙精度浮點型變量或函數返回值類型
else :條件語句否定分支(與 if 連用)
enum :聲明枚舉類型
extern:聲明變量或函數是在其它文件或本文件的其他位置定義
float:聲明浮點型變量或函數返回值類型
for:一種循環語句
goto:無條件跳轉語句
if:條件語句
int: 聲明整型變量或函數
long :聲明長整型變量或函數返回值類型
register:聲明寄存器變量
return :子程序返回語句(可以帶參數,也可不帶參數)
short :聲明短整型變量或函數
signed:聲明有符號類型變量或函數
sizeof:計算數據類型或變量長度(即所占字節數)
static :聲明靜態變量
struct:聲明結構體類型
switch :用于開關語句
typedef:用以給數據類型取別名
unsigned:聲明無符號類型變量或函數
union:聲明共用體類型
void :聲明函數無返回值或無參數,聲明無類型指針
volatile:說明變量在程序執行中可被隱含地改變
while :循環語句的循環條件

3.c語言關鍵字優點(c99,不是c11標準)

簡潔緊湊、靈活方便

  ANSI C一共只有32個關鍵字,9種控制語句,程序書寫形式自由,區分大小寫。把高級語言的基本結構和語句與低級語言的實用性結合起來。 C 語言可以像匯編語言一樣對位、字節和地址進行操作,而這三者是計算機最基本的工作單元。

運算符豐富

  C語言的運算符包含的范圍很廣泛,共有34種運算符。C語言把括號、賦值、強制類型轉換等都作為運算符處理。從而使C語言的運算類型極其豐富,表達式類型多樣化。靈活使用各種運算符可以實現在其它高級語言中難以實現的運算。

數據類型豐富

  C語言的數據類型有:整型、實型、字符型、數組類型、指針類型、結構體類型、共用體類型等。能用來實現各種復雜的數據結構的運算。并引入了指針概念,使程序效率更高。另外C語言具有強大的圖形功能,支持多種顯示器和驅動器。且計算功能、邏輯判斷功能強大。
同時對于不同的編譯器也有各種強大的擴展功能。

另外

  C語言如此豐富數據類型及強大指針功能,其對硬件的管控能力極強,所以許多操作系統內核及MCU芯片程序開發都偏愛硬件。

4.這里可以提下volatile關鍵字

   volatile總是與優化有關,編譯器有一種技術叫做數據流分析,分析程序中的變量在哪里賦值、在哪里使用、在哪里失效,分析結果可以用于常量合并,常量傳播等優化,進一步可以消除一些代碼。但有時這些優化不是程序所需要的,這時可以用volatile關鍵字禁止做這些優化。

  volatile的本意是“易變的” 因為訪問寄存器要比訪問內存單元快的多,所以編譯器一般都會作減少存取內存的優化,但有可能會讀臟數據。當要求使用volatile聲明變量值的時候,系統總是重新從它所在的內存讀取數據,即使它前面的指令剛剛從該處讀取過數據。精確地說就是,遇到這個關鍵字聲明的變量,編譯器對訪問該變量的代碼就不再進行優化,從而可以提供對特殊地址的穩定訪問;如果不使用valatile,則編譯器將對所聲明的語句進行優化。(簡潔的說就是:volatile關鍵詞影響編譯器編譯的結果,用volatile聲明的變量表示該變量隨時可能發生變化,與該變量有關的運算,不要進行編譯優化,以免出錯)

看兩個事例:

1>告訴compiler不能做任何優化

比如要往某一地址送兩指令:
int *ip =...; //設備地址
*ip = 1; //第一個指令
*ip = 2; //第二個指令
以上程序compiler可能做優化而成:
int *ip = ...;
*ip = 2;
結果第一個指令丟失。如果用volatile, compiler就不允許做任何的優化,從而保證程序的原意:
volatile int *ip = ...;
*ip = 1;
*ip = 2;
即使你要compiler做優化,它也不會把兩次付值語句間化為一。它只能做其它的優化。

2>用volatile定義的變量會在程序外被改變,每次都必須從內存中讀取,而不能重復使用放在cache或寄存器中的備份。

例如:

volatile char a;
 
a=0;
 
while(!a){
 
//do some things;
 
}
 
doother();
 
如果沒有 volatiledoother()不會被執行

“C語言中的關鍵字怎么用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

兴宁市| 游戏| 乌海市| 茂名市| 会东县| 六盘水市| 龙岩市| 木兰县| 手机| 蓬莱市| 府谷县| 阜阳市| 浑源县| 南漳县| 道孚县| 怀化市| 启东市| 渝北区| 常熟市| 资阳市| 古交市| 隆昌县| 游戏| 怀仁县| 华容县| 墨脱县| 吴忠市| 屏边| 平谷区| 白沙| 峨眉山市| 桓仁| 高陵县| 邵阳县| 光山县| 徐汇区| 郑州市| 海兴县| 密山市| 达日县| 屏山县|