C語言學(xué)習(xí)一 — 程序結(jié)構(gòu)基本語法及數(shù)據(jù)類型

C 程序結(jié)構(gòu)

C Hello World 實(shí)例

C 程序主要包括以下部分:

  • 預(yù)處理器指令
  • 函數(shù)
  • 變量
  • 語句 & 表達(dá)式
  • 注釋

讓我們看一段簡單的代碼波丰,可以輸出單詞 "Hello World":


#include <stdio.h>
 
int main()
{
  /* this is my first c program*/
   printf("Hello, World! \n");
   
   return 0;
}

接下來我們講解一下上面這段程序:

  1. 程序的第一行 #include <stdio.h> 是預(yù)處理器指令亮元,告訴 C 編譯器在實(shí)際編譯之前要包含 stdio.h 文件。
  2. 下一行 int main() 是主函數(shù),程序從這里開始執(zhí)行砾嫉。
  3. 下一行 /*...*/ 將會(huì)被編譯器忽略匀哄,這里放置程序的注釋內(nèi)容倔喂。它們被稱為程序的注釋。
  4. 下一行 printf(...) 是 C 中另一個(gè)可用的函數(shù)糖荒,會(huì)在屏幕上顯示消息 "Hello, World!"杉辙。
  5. 下一行 return 0; 終止 main() 函數(shù),并返回值 0捶朵。

C 基本語法

我們已經(jīng)看過 C 程序的基本結(jié)構(gòu)蜘矢,這將有助于我們理解 C 語言的其他基本的構(gòu)建塊。

C 的關(guān)鍵字

下表列出了 C 中的保留字综看。這些保留字不能作為常量名品腹、變量名或其他標(biāo)識符名稱。

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

C99 新增關(guān)鍵字

_Bool _Complex _Imaginary inline restrict

C11 新增關(guān)鍵字

_Alignas _Alignof _Atomic _Generic _Noreturn
_Static_assert _Thread_local

C 數(shù)據(jù)類型

在 C 語言中析珊,數(shù)據(jù)類型指的是用于聲明不同類型的變量或函數(shù)的一個(gè)廣泛的系統(tǒng)羡鸥。變量的類型決定了變量存儲(chǔ)占用的空間,以及如何解釋存儲(chǔ)的位模式忠寻。

C 中的類型可分為以下幾種:

序號 類型與描述
1 基本類型: 它們是算術(shù)類型惧浴,包括兩種類型:整數(shù)類型和浮點(diǎn)類型。
2 枚舉類型: 它們也是算術(shù)類型锡溯,被用來定義在程序中只能賦予其一定的離散整數(shù)值的變量赶舆。
3 void 類型: 類型說明符 void 表明沒有可用的值。
4 派生類型: 它們包括:指針類型祭饭、數(shù)組類型芜茵、結(jié)構(gòu)類型、共用體類型和函數(shù)類型倡蝙。

數(shù)組類型和結(jié)構(gòu)類型統(tǒng)稱為聚合類型九串。函數(shù)的類型指的是函數(shù)返回值的類型。在本章節(jié)接下來的部分我們將介紹基本類型寺鸥,其他幾種類型會(huì)在后邊幾個(gè)章節(jié)中進(jìn)行講解猪钮。

整數(shù)類型

下表列出了關(guān)于標(biāo)準(zhǔn)整數(shù)類型的存儲(chǔ)大小和值范圍的細(xì)節(jié):

下表列出了關(guān)于標(biāo)準(zhǔn)整數(shù)類型的存儲(chǔ)大小和值范圍的細(xì)節(jié):

類型 存儲(chǔ)大小 32 /64 值范圍
char 1 字節(jié) -128 到 127 或 0 到 255
unsigned char 1 字節(jié) 0 到 255
signed char 1 字節(jié) -128 到 127
int 2 或 4 字節(jié) -32,768 到 32,767 或 -2,147,483,648 到 2,147,483,647
unsigned int 2 或 4 字節(jié) 0 到 65,535 或 0 到 4,294,967,295
short 2 字節(jié) -32,768 到 32,767
unsigned short 2 字節(jié) 0 到 65,535
long 4 字節(jié) -2,147,483,648 到 2,147,483,647
unsigned long 4 字節(jié) 0 到 4,294,967,295

注意,各種類型的存儲(chǔ)大小與系統(tǒng)位數(shù)有關(guān)胆建,但目前通用的以64位系統(tǒng)為主烤低。

以下列出了32位系統(tǒng)與64位系統(tǒng)的存儲(chǔ)大小的差別(windows 相同):

sizeof32-64.jpg

下表列出了關(guān)于標(biāo)準(zhǔn)浮點(diǎn)類型的存儲(chǔ)大小、值范圍和精度的細(xì)節(jié):

類型 存儲(chǔ)大小 值范圍 精度
float 4 字節(jié) 1.2E-38 到 3.4E+38 6 位小數(shù)
double 8 字節(jié) 2.3E-308 到 1.7E+308 15 位小數(shù)
long double 16 字節(jié) 3.4E-4932 到 1.1E+4932 19 位小數(shù)

頭文件 float.h 定義了宏笆载,在程序中可以使用這些值和其他有關(guān)實(shí)數(shù)二進(jìn)制表示的細(xì)節(jié)扑馁。下面的實(shí)例將輸出浮點(diǎn)類型占用的存儲(chǔ)空間以及它的范圍值:

#include <stdio.h>
#include <float.h>
 
int main()
{
 printf("long size is : %lu \n", sizeof(long double));
printf("float 存儲(chǔ)最大字節(jié)數(shù) : %lu \n", sizeof(float));
printf("float 最小值: %E\n", FLT_MIN );
printf("float 最大值: %E\n", FLT_MAX );
printf("精度值: %d\n", FLT_DIG );
   
   return 0;
}

long size is : 16
float 存儲(chǔ)最大字節(jié)數(shù) : 4 
float 最小值: 1.175494E-38
float 最大值: 3.402823E+38
精度值: 6

Process finished with exit code 0

void 類型

void 類型指定沒有可用的值涯呻。它通常用于以下三種情況下:

序號 類型與描述
1 函數(shù)返回為空 C 中有各種函數(shù)都不返回值,或者您可以說它們返回空腻要。不返回值的函數(shù)的返回類型為空复罐。例如 void exit (int status);
2 函數(shù)參數(shù)為空 C 中有各種函數(shù)不接受任何參數(shù)。不帶參數(shù)的函數(shù)可以接受一個(gè) void雄家。例如 int rand(void);
3 指針指向 void 類型為 void * 的指針代表對象的地址效诅,而不是類型。例如趟济,內(nèi)存分配函數(shù) void *malloc( size_t size ); 返回指向 void 的指針乱投,可以轉(zhuǎn)換為任何數(shù)據(jù)類型。

如果現(xiàn)在您還是無法完全理解 void 類型咙好,不用太擔(dān)心篡腌,在后續(xù)的章節(jié)中我們將會(huì)詳細(xì)講解這些概念。

常用基本數(shù)據(jù)類型占用空間(64位機(jī)器為例)

  • char : 1個(gè)字節(jié)
  • int :4個(gè)字節(jié)
  • float:4個(gè)字節(jié)
  • double:8個(gè)字節(jié)

基本類型書寫

整數(shù)

  • a勾效,默認(rèn)為10進(jìn)制 嘹悼,10 ,20层宫。
  • b杨伙,以0開頭為8進(jìn)制,045萌腿,021限匣。
  • c.,以0b開頭為2進(jìn)制毁菱,0b11101101米死。
  • d,以0x開頭為16進(jìn)制贮庞,0x21458adf峦筒。

小數(shù)

單精度常量:2.3f 。

雙精度常量:2.3窗慎,默認(rèn)為雙精度物喷。

字符型常量

用英文單引號括起來,只保存一個(gè)字符'a'遮斥、'b' 峦失、'*' ,還有轉(zhuǎn)義字符 '\n' 术吗、'\t'尉辑。

字符串常量

用英文的雙引號引起來 可以保存多個(gè)字符:"abc"。

1较屿、數(shù)據(jù)類型轉(zhuǎn)換:C 語言中如果一個(gè)表達(dá)式中含有不同類型的常量和變量隧魄,在計(jì)算時(shí)实幕,會(huì)將它們自動(dòng)轉(zhuǎn)換為同一種類型;在 C 語言中也可以對數(shù)據(jù)類型進(jìn)行強(qiáng)制轉(zhuǎn)換堤器;

2、自動(dòng)轉(zhuǎn)換規(guī)則:

  • a)浮點(diǎn)數(shù)賦給整型末贾,該浮點(diǎn)數(shù)小數(shù)被舍去闸溃;
  • b)整數(shù)賦給浮點(diǎn)型,數(shù)值不變拱撵,但是被存儲(chǔ)到相應(yīng)的浮點(diǎn)型變量中辉川;

3、強(qiáng)制類型轉(zhuǎn)換形式: (類型說明符)(表達(dá)式)

相關(guān)學(xué)習(xí)代碼已上傳拴测,點(diǎn)此查看

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末乓旗,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子集索,更是在濱河造成了極大的恐慌屿愚,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,378評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件务荆,死亡現(xiàn)場離奇詭異妆距,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)函匕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評論 3 399
  • 文/潘曉璐 我一進(jìn)店門娱据,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人盅惜,你說我怎么就攤上這事中剩。” “怎么了抒寂?”我有些...
    開封第一講書人閱讀 168,983評論 0 362
  • 文/不壞的土叔 我叫張陵结啼,是天一觀的道長。 經(jīng)常有香客問我蓬推,道長妆棒,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,938評論 1 299
  • 正文 為了忘掉前任沸伏,我火速辦了婚禮糕珊,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘毅糟。我一直安慰自己红选,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,955評論 6 398
  • 文/花漫 我一把揭開白布姆另。 她就那樣靜靜地躺著喇肋,像睡著了一般坟乾。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蝶防,一...
    開封第一講書人閱讀 52,549評論 1 312
  • 那天甚侣,我揣著相機(jī)與錄音,去河邊找鬼间学。 笑死殷费,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的低葫。 我是一名探鬼主播详羡,決...
    沈念sama閱讀 41,063評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼嘿悬!你這毒婦竟也來了实柠?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,991評論 0 277
  • 序言:老撾萬榮一對情侶失蹤善涨,失蹤者是張志新(化名)和其女友劉穎窒盐,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體钢拧,經(jīng)...
    沈念sama閱讀 46,522評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡登钥,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,604評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了娶靡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片牧牢。...
    茶點(diǎn)故事閱讀 40,742評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖姿锭,靈堂內(nèi)的尸體忽然破棺而出塔鳍,到底是詐尸還是另有隱情,我是刑警寧澤呻此,帶...
    沈念sama閱讀 36,413評論 5 351
  • 正文 年R本政府宣布轮纫,位于F島的核電站,受9級特大地震影響焚鲜,放射性物質(zhì)發(fā)生泄漏掌唾。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,094評論 3 335
  • 文/蒙蒙 一忿磅、第九天 我趴在偏房一處隱蔽的房頂上張望糯彬。 院中可真熱鬧,春花似錦葱她、人聲如沸撩扒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,572評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽搓谆。三九已至炒辉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間泉手,已是汗流浹背黔寇。 一陣腳步聲響...
    開封第一講書人閱讀 33,671評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留斩萌,地道東北人啡氢。 一個(gè)月前我還...
    沈念sama閱讀 49,159評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像术裸,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子亭枷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,747評論 2 361

推薦閱讀更多精彩內(nèi)容