逍遙自在學(xué)C語言 | 變量肿仑、常量與數(shù)據(jù)類型

前言

一、人物簡介

  • 第一位閃亮登場碎税,有請今后會一直教我們C語言的老師 —— 自在尤慰。
  • 第二位上場的是和我們一起學(xué)習(xí)的小白程序猿 —— 逍遙。

二雷蹂、基本數(shù)據(jù)類型

1伟端、整型

C語言中的整型數(shù)據(jù)如下表所示:

數(shù)據(jù)類型 含義 長度(字節(jié)) 取值范圍(有符號) 取值范圍(無符號)
short 短整型 2 [ -2^{15} , 2^{15}-1 ] [ 0 , 2^{16}-1 ]
int 整型 4 [ -2^{31} , 2^{31}-1 ] [ 0 , 2^{32}-1 ]
long 長整型 4或8
long long 長長整型 8 [ -2^{63} , 2^{63}-1 ] [ 0 , 2^{64}-1 ]
  • 整型數(shù)據(jù)可以是有符號的,也可以是無符號的匪煌。

  • 有符號的整型可以表示負(fù)數(shù)和正數(shù)责蝠,而無符號的整型只能表示非負(fù)整數(shù)党巾。

2、浮點(diǎn)型

浮點(diǎn)型用于表示實(shí)數(shù)霜医,它分為單精度浮點(diǎn)型(float)和雙精度浮點(diǎn)型(double)齿拂。單精度浮點(diǎn)型占用4個(gè)字節(jié),雙精度浮點(diǎn)型占用8個(gè)字節(jié)肴敛。它們的取值范圍和精度如下表所示:

數(shù)據(jù)類型 長度(字節(jié)) 取值范圍 精度
float 4 1.2E-38 ~ 3.4E38 約6位小數(shù)
double 8 2.2E-308 ~ 1.8E308(15位有效數(shù)字) 約15位小數(shù)

?? 浮點(diǎn)型數(shù)據(jù)在計(jì)算機(jī)內(nèi)部以二進(jìn)制形式存儲署海,因此可能會存在精度問題。在進(jìn)行浮點(diǎn)型數(shù)據(jù)的比較時(shí)医男,應(yīng)該使用適當(dāng)?shù)恼`差范圍進(jìn)行比較砸狞。

3、字符型

字符型用于表示單個(gè)字符镀梭,它占用1個(gè)字節(jié)睬罗。

數(shù)據(jù)類型 含義 長度(字節(jié)) 取值范圍(有符號) 取值范圍(無符號)
char 字符型 1 [ -2^7 , 2^7-1 ] [ 0 , 2^8-1 ]

字符型數(shù)據(jù)可以作為單個(gè)字符使用,也可以作為整型數(shù)據(jù)使用棘幸,表示該字符在ASCII碼表中的對應(yīng)數(shù)值翼闽。

4、布爾型

布爾型(bool)用于表示真假值笙什,它只有兩個(gè)取值:true和false飘哨。

在C語言中,布爾型數(shù)據(jù)被定義為一個(gè)整型數(shù)據(jù)類型琐凭,0表示false芽隆,非0表示true。

三统屈、變量


1胚吁、變量的定義和聲明

在C語言中,變量必須先被定義或聲明才能使用愁憔。定義一個(gè)變量意味著為它分配內(nèi)存腕扶,聲明一個(gè)變量意味著告訴編譯器這個(gè)變量的類型和名稱。

  • 變量的定義格式如下:
type variable_name;

其中吨掌,type是變量的數(shù)據(jù)類型半抱,variable_name是變量的名稱。例如:

int apple;
short i = 5;
float voltage;
  • 變量的聲明有兩種情況:

1??一種是需要建立存儲空間的膜宋。例如:int apple 在聲明的時(shí)候就已經(jīng)建立了存儲空間窿侈。
2??另一種是不需要建立存儲空間的,通過使用extern關(guān)鍵字聲明變量名而不定義它秋茫。 例如:extern int apple史简, 其中變量 apple 可以在別的文件中定義。

extern int apple; //聲明肛著,不是定義
int students; //聲明圆兵,也是定義

?? 一般來講跺讯,除非有extern關(guān)鍵字,否則都是變量的定義

2衙傀、變量類型

在C語言中抬吟,變量的類型指的是變量所存儲的數(shù)據(jù)類型。我們前面介紹的基本數(shù)據(jù)類型统抬,都可以作為變量的類型火本。

  • int:整型,用于存儲整數(shù)聪建。
  • long: 長整型钙畔,用于存儲更大的整數(shù)。
  • float:單精度浮點(diǎn)型金麸,用于存儲浮點(diǎn)數(shù)擎析。
  • double:雙精度浮點(diǎn)型,用于存儲更大的浮點(diǎn)數(shù)挥下。
  • char:字符型揍魂,用于存儲字符。
  • bool:布爾型棚瘟,用于存儲布爾值现斋。

C語言還提供了一些復(fù)合數(shù)據(jù)類型,如結(jié)構(gòu)體偎蘸、聯(lián)合體和枚舉等庄蹋,這些符合數(shù)據(jù)類型,我們在以后的文章中再介紹迷雪。

3限书、變量命名規(guī)則

  • 變量名可以由字母、數(shù)字和下劃線組成章咧,但必須以字母或下劃線開頭倦西。

  • 變量名不能使用關(guān)鍵字作為名稱,變量名的長度沒有限制赁严,但建議使用有意義的名稱扰柠。

?? 正確的變量命名

int _gCount = 1;
int m_Age = 18;
long time2 = 20;

? 錯(cuò)誤的變量命名

int 1round = 0; //不能以數(shù)字開頭

int case = 1; //不能以關(guān)鍵字作為變量名

int %age = 16; //不能用標(biāo)點(diǎn)符號

int name age = 18; //不能用空格

4、變量的初始化和賦值

  • 在C語言中误澳,可以使用賦值運(yùn)算符(=)將一個(gè)值賦給一個(gè)變量。

例如秦躯,下面的代碼將值20賦給變量num:

int num;
num = 20;
  • 變量的初始化是指在聲明變量時(shí)將其賦初值忆谓。

例如,下面的代碼聲明并初始化了一個(gè)名為num的整數(shù)變量:

int num = 10;

5踱承、變量作用域

在C語言中倡缠,變量的作用域指的是變量在程序中可見的范圍哨免。變量可以在函數(shù)內(nèi)部或外部定義。

  • 在函數(shù)內(nèi)部定義的變量稱為局部變量昙沦,只在該函數(shù)中可見琢唾。
  #include <stdio.h>
  
  void print_local_num() {
      int local_num = 20;   // 局部變量
      printf("local_num = %d\n", local_num);
  }
  
  int main()
  {
      print_local_num();  // 輸出 local_num = 20
    return 0;    
  }
  • 在函數(shù)外部定義的變量稱為全局變量,可以在整個(gè)程序中使用盾饮。
#include <stdio.h>

int global_num = 10; // 全局變量

void print_global_num() {
    printf("global_num = %d\n", global_num);
}

int main() {
    print_global_num();  // 輸出 global_num = 10
    return 0;
}

6采桃、變量存儲類型

在C語言中,變量的存儲類型指的是變量所存儲的位置丘损。C語言中的存儲類型包括自動普办、靜態(tài)、寄存器和外部等徘钥。

  • 自動變量:自動變量在函數(shù)內(nèi)部聲明衔蹲,在函數(shù)執(zhí)行時(shí)被創(chuàng)建,在函數(shù)結(jié)束時(shí)被銷毀呈础。
  • 靜態(tài)變量:靜態(tài)變量在函數(shù)內(nèi)部或函數(shù)外部聲明舆驶,它們在程序開始執(zhí)行時(shí)被創(chuàng)建,在程序結(jié)束時(shí)被銷毀而钞。
  • 寄存器變量:寄存器變量是指被存儲在CPU寄存器中的變量沙廉,它們通常用于在計(jì)算密集型的代碼中提高性能。
  • 外部變量:外部變量是在程序文件外部聲明的全局變量笨忌,可以被程序的所有文件訪問蓝仲。

??自動變量的默認(rèn)存儲類別為auto。例如官疲,下面的代碼定義了一個(gè)自動變量num:

#include <stdio.h>

void print_num() {
    auto int num = 30;
    printf("num = %d\n", num);
}

int main() {
    print_num();  // 輸出 num = 30
    return 0;
}

??靜態(tài)變量默認(rèn)存儲類別為static袱结,在程序執(zhí)行期間始終存在,它的值在函數(shù)調(diào)用之間保持不變途凫。例如垢夹,下面的代碼定義了一個(gè)靜態(tài)變量static_num:

#include <stdio.h>

void print_static_num() {
    static int static_num = 40;
    printf("static_num = %d\n", static_num);
    static_num++;
}

int main() {
    print_static_num();  // 輸出 static_num = 40
    print_static_num();  // 輸出 static_num = 41
    print_static_num();  // 輸出 static_num = 42
    return 0;
}

??寄存器變量的默認(rèn)存儲類別為register。例如维费,下面的代碼定義了一個(gè)寄存器變量reg_num:

#include <stdio.h>

void print_reg_num() {
    register int reg_num = 50;
    printf("reg_num = %d\n", reg_num);
}

int main() {
    print_reg_num();  // 輸出 reg_num = 50
    return 0;
}

??外部變量的默認(rèn)存儲類別為extern果元。例如,下面的代碼定義了一個(gè)外部變量extern_num犀盟,并在另一個(gè)文件中訪問它:

// other_file.c
int extern_num = 60;

// main.c
#include <stdio.h>

extern int extern_num;

void print_extern_num() {
    printf("extern_num = %d\n", extern_num);
}

int main() {
    print_extern_num();  // 輸出 extern_num = 60
    return 0;
}

四而晒、常量

在C語言中,常量可以是整數(shù)阅畴、浮點(diǎn)數(shù)倡怎、字符或字符串。

1、 整數(shù)常量

整數(shù)常量是指不帶小數(shù)部分的數(shù)字监署。在C語言中颤专,整數(shù)常量可以用十六進(jìn)制、八進(jìn)制或十進(jìn)制表示钠乏。下表列出了不同進(jìn)制下整數(shù)常量的表示方法:

進(jìn)制 格式 示例
十進(jìn)制 直接寫數(shù)字 10, 20, 30
八進(jìn)制 以0開頭 012, 034, 076
十六進(jìn)制 以0x或0X開頭 0x10, 0x1E, 0xFF

例如栖秕,下面的代碼定義了三個(gè)整數(shù)常量:

#include <stdio.h>

int main() {
    int decimal_num = 10;
    int octal_num = 012;
    int hex_num = 0xFF;
    printf("decimal_num = %d, octal_num = %d, hex_num = %d\n", decimal_num, octal_num, hex_num);
    return 0;
}

輸出結(jié)果為:decimal_num = 10, octal_num = 10, hex_num = 255。

2晓避、 浮點(diǎn)數(shù)常量

浮點(diǎn)數(shù)常量是指帶有小數(shù)部分的數(shù)字簇捍。在C語言中,浮點(diǎn)數(shù)常量可以用小數(shù)點(diǎn)表示够滑,也可以用科學(xué)計(jì)數(shù)法表示垦写。例如,下面的代碼定義了兩個(gè)浮點(diǎn)數(shù)常量:

#include <stdio.h>

int main() {
    float float_num = 1.23;
    double double_num = 1.23e-5;
    printf("float_num = %f, double_num = %f\n", float_num, double_num);
    return 0;
}

輸出結(jié)果為:float_num = 1.230000, double_num = 0.000012彰触。

3梯投、 字符常量

字符常量是指用單引號括起來的單個(gè)字符。例如况毅,下面的代碼定義了兩個(gè)字符常量:

#include <stdio.h>

int main() {
    char char_a = 'A';
    char char_b = 'B';
    printf("char_a = %c, char_b = %c\n", char_a, char_b);
    return 0;
}

4分蓖、 字符串常量

字符串常量是指用雙引號括起來的多個(gè)字符。在C語言中尔许,字符串常量實(shí)際上是一個(gè)字符數(shù)組么鹤,以空字符('\0')結(jié)尾。例如味廊,下面的代碼定義了一個(gè)字符串常量:

#include <stdio.h>

int main() {
    char str[] = "Hello, world!";
    printf("%s\n", str);
    return 0;
}

輸出結(jié)果為:Hello, world!蒸甜。

小結(jié)

通過這篇文章,我們已經(jīng)學(xué)會了C語言中基本的數(shù)據(jù)類型余佛、變量和常量的使用柠新。繼續(xù)加油,你會成為C語言大佬的辉巡!

以上恨憎,如果覺得對你有幫助,點(diǎn)個(gè)贊再走吧郊楣,這樣@知微之見也有更新下去的動力憔恳!

也歡迎私信我,一起交流净蚤!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末钥组,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子今瀑,更是在濱河造成了極大的恐慌程梦,老刑警劉巖腔丧,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異作烟,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)砾医,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進(jìn)店門拿撩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人如蚜,你說我怎么就攤上這事压恒。” “怎么了错邦?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵探赫,是天一觀的道長。 經(jīng)常有香客問我撬呢,道長伦吠,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任魂拦,我火速辦了婚禮毛仪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘芯勘。我一直安慰自己箱靴,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布荷愕。 她就那樣靜靜地躺著衡怀,像睡著了一般。 火紅的嫁衣襯著肌膚如雪安疗。 梳的紋絲不亂的頭發(fā)上抛杨,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天,我揣著相機(jī)與錄音茂契,去河邊找鬼蝶桶。 笑死,一個(gè)胖子當(dāng)著我的面吹牛掉冶,可吹牛的內(nèi)容都是我干的真竖。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼厌小,長吁一口氣:“原來是場噩夢啊……” “哼恢共!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起璧亚,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤讨韭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體透硝,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡狰闪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了濒生。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片埋泵。...
    茶點(diǎn)故事閱讀 39,977評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖罪治,靈堂內(nèi)的尸體忽然破棺而出丽声,到底是詐尸還是另有隱情,我是刑警寧澤觉义,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布雁社,位于F島的核電站,受9級特大地震影響晒骇,放射性物質(zhì)發(fā)生泄漏霉撵。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一洪囤、第九天 我趴在偏房一處隱蔽的房頂上張望喊巍。 院中可真熱鬧,春花似錦箍鼓、人聲如沸崭参。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽何暮。三九已至,卻和暖如春铐殃,著一層夾襖步出監(jiān)牢的瞬間海洼,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工富腊, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留坏逢,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓赘被,卻偏偏與公主長得像是整,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子民假,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評論 2 355

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