C語言基礎(一)

2021-10-20 00:25:39 字數 4086 閱讀 8458

語法結構: 型別 變數名

拓展:變數名屬於識別符號 識別符號只能數字、字母和下劃線命名 首字元不能是數字 不能和關鍵字相同

資料型別相關關鍵字

一、char

char 字元型 用char定義變數是字元型變數 佔1位元組 只能儲存字元 不能儲存字串

有符號範圍:-256255(-2^72^7-1)

無符號範圍:0-1~2^8-1

二、short

short 短整形 用short定義的變數是短整形變數 佔2個位元組

有符號範圍:-3276832767(-2^152^15-1)

無符號範圍:0~2^16-1

三、int

int 整形 用int定義的變數為整形變數 在32位及以上的作業系統中佔4個位元組

有符號範圍:-231~231-1

無符號範圍:0~2^31-1

四、long

long長整形 用long定義的變數為長整形 在32位的作業系統中佔4個位元組 在64位作業系統中佔8個位元組

五、float

float 單精度浮點型(實數) 用float定義的為單浮點型實數,佔4個位元組

六、double

double 雙精度浮點型(實數) 用double定義的為雙浮點實數,佔8個位元組

七、struct

struct為結構體型別相關的關鍵字,可以用它來定義結構體型別,

八、union

union為共用體(聯合體)相關的關鍵字

九、enum

enum為列舉型別相關的關鍵字

十、signed

signed 表示有符號意思 在定義char、整形(short、int、long)資料時用signed修飾,代表定義的資料型別是有符號的,可以儲存正數,也可以儲存負數 預設情況下signed可以省略不寫

十一、unsigned

unsigned 表示無符號意思 在定義char、整形(short、int、long)資料時用unsigned修飾,代表定義的資料型別是無符號的,可以儲存正數和0

十二、void

void為空型別關鍵字 不能定義變數 它是用來修飾函式的引數和返回值,代表函式沒有引數或者沒有返回值

儲存相關關鍵字

一、register

register 代表暫存器,用register修飾的變數為暫存器變數 即在編譯的時候告訴編譯器,盡量將其儲存空間分配在暫存器中。

注:(1)定義的變數不一定放在暫存器中

(2)cpu取資料的時候去暫存器中拿資料比在記憶體中要快

(3)因為暫存器比較寶貴,盡量不要在定義暫存器變數

(4)register只能修飾字元型及整形,不能修飾浮點型

(5)因為register修飾的變數是存在暫存器中,所以不能對暫存器去位址

二、static

static 靜態變數 可以修飾全域性變數、函式 使用static修飾的變數,此變數儲存在記憶體的靜態空間中

三、const

const是常量意思 用const修飾的變數是不可修改的,不能修改它的值

四、auto

auto int a和int a 一樣

五、extem

extern 外部,一般定義用於函式和全域性變數

其他關鍵字

一、sizeof

用來測量變數、陣列占用的儲存空間大下(位元組數)

二、typedef

重新命名相關關鍵字 作用是給已有的型別,重新定義乙個型別名,並沒有建立乙個新的型別

例如:typedef unsigned char ucahr;

三、volatile

用volatile定義的變數,是易改變的,即告訴cpu每次用到volatile變數的時候,重新去記憶體中取保證每次得到的資料都是最新的,而不是暫存器的備份。

格式化輸出字元

%d 十進位制輸出有符號整數

%ld十進位制輸出long有符號整數

%u 十進位制輸出無符號整數

%o 八進位制輸出整數

%x 十六進製制輸出整數

%f 輸出float浮點數

%lf輸出double型浮點數

%e輸出指數形式的浮點數

%c 輸出單個字元

%s 輸出字串

%p 輸出指標值

型別轉換

轉換方式一:自動轉換 遵循一定規則由編譯器自動完成型別轉換

轉換方式二:強制型別轉換 把表示式的運算結果強制轉換成所需的資料型別

通過型別轉換運算來實現 (型別說明符)(表示式)

注意:型別說明符必須加括號

算數運算子

運算子 描述 例項

檢查左運算元的值是否大於右運算元的值,如果是則條件為真。 (a > b) 不為真。

< 檢查左運算元的值是否小於右運算元的值,如果是則條件為真。 (a < b) 為真。

= 檢查左運算元的值是否大於或等於右運算元的值,如果是則條件為真。 (a >= b) 不為真。

<= 檢查左運算元的值是否小於或等於右運算元的值,如果是則條件為真。 (a <= b) 為真。

邏輯運算子

運算子 描述 例項

&& 稱為邏輯與運算子。如果兩個運算元都非零,則條件為真。 (a && b) 為假。

|| 稱為邏輯或運算子。如果兩個運算元中有任意乙個非零,則條件為真。 (a || b) 為真。

! 稱為邏輯非運算子。用來逆轉運算元的邏輯狀態。如果條件為真則邏輯非運算子將使其為假。 !(a && b) 為真。

位運算子

運算子 描述 例項

& 如果同時存在於兩個運算元中,二進位制 and 運算子複製一位到結果中。 (a & b) 將得到 12,即為 0000 1100

| 如果存在於任一運算元中,二進位制 or 運算子複製一位到結果中。 (a | b) 將得到 61,即為 0011 1101

^ 如果存在於其中乙個運算元中但不同時存在於兩個運算元中,二進位制異或運算子複製一位到結果中。 (a ^ b) 將得到 49,即為 0011 0001

~ 二進位制補碼運算子是一元運算子,具有"翻轉"位效果,即0變成1,1變成0。 (~a ) 將得到 -61,即為 1100 0011,乙個有符號二進位制數的補碼形式。

<< 二進位制左移運算子。左運算元的值向左移動右運算元指定的位數。 a << 2 將得到 240,即為 1111 0000

二進位制右移運算子。左運算元的值向右移動右運算元指定的位數。

賦值運算子

下表列出了 c 語言支援的賦值運算子:

運算子 描述 例項

= 簡單的賦值運算子,把右邊運算元的值賦給左邊運算元 c = a + b 將把 a + b 的值賦給 c

+= 加且賦值運算子,把右邊運算元加上左邊運算元的結果賦值給左邊運算元 c += a 相當於 c = c + a

-= 減且賦值運算子,把左邊運算元減去右邊運算元的結果賦值給左邊運算元 c -= a 相當於 c = c - a

*= 乘且賦值運算子,把右邊運算元乘以左邊運算元的結果賦值給左邊運算元 c *= a 相當於 c = c * a

/= 除且賦值運算子,把左邊運算元除以右邊運算元的結果賦值給左邊運算元 c /= a 相當於 c = c / a

%= 求模且賦值運算子,求兩個運算元的模賦值給左邊運算元 c %= a 相當於 c = c % a

<<= 左移且賦值運算子 c <<= 2 等同於 c = c << 2

= 右移且賦值運算子 c >>= 2 等同於 c = c >> 2

&= 按位與且賦值運算子 c &= 2 等同於 c = c & 2

^= 按位異或且賦值運算子 c ^= 2 等同於 c = c ^ 2

|= 按位或且賦值運算子 c |= 2 等同於 c = c | 2

雜項運算子 ↦ sizeof & 三元

下表列出了 c 語言支援的其他一些重要的運算子,包括 sizeof 和 ? :。

運算子 描述 例項

sizeof() 返回變數的大小。 sizeof(a) 將返回 4,其中 a 是整數。

& 返回變數的位址。 &a; 將給出變數的實際位址。

自增自減運算子

(1)將++或者–放在變數後面

注意:先使用後自增或自減

(2)將++或者–放在變數前面

注意:先自增或自減後使用

C語言基礎一

命令語句都是在蘋果終端下使用的。編譯 cc c hello.c 把源 變成二進位制檔案 目標檔案 cc one.o two.o three.o 預設生成可執行檔案a.out cc o task one.o 生成可執行檔案task 執行 1 在終端輸入 a.out 2 雙擊a.out檔案,選擇用終端執...

c語言基礎(一)

雙精度和單精度 數字後帶f的是單精度float,不帶的是雙精度double,單精度儲存的範圍是雙精度的倍數,兩種都屬於浮點型,當整數部分位數太多時候,小數部分很可能被遺失。ascii碼中0 31和127是不可以在鍵盤中輸入的。除了轉義字元 字元常量 a 單引號包含乙個 x和兩個16進製制數 任何0 ...

C語言基礎 一

一 語言的發展 1 機器語言 特點 a.或稱為二進位制 語言,計算機可以直接識別,不需要做任何翻譯.b.是第一代的計算機語言.c.使用時難記憶難操作編寫出來的程式全是由0和1的數字組成,直觀性差,難以閱讀,不僅難學,難記難檢查,又缺乏通用性.2.十進位制轉為二進位制 將十進位制除以2的餘數寫出來 直...