C語言——基礎知識——預處理,常量定義,數(shù)據(jù)類型

2021-02-18    分類: 網(wǎng)站建設

數(shù)據(jù)類型,預處理,常量的定義,變量及運算符.

----------------------------------------------------------------------------------------------------

C語言語法體系: 基本所有高級語言都可以這樣劃分.

1.數(shù)據(jù)類型 :

1.基本數(shù)據(jù)類型 : 整型,字符型,浮點型(float,double).

2.數(shù)組類型 : 一維數(shù)組(數(shù)組與字符串),二維數(shù)組,多維數(shù)組.

3.指針類型.

4.結構體類型.

5.共用體類型.

6.void空類型.

7.枚舉型.

2.運算符與表達式.

3.C語言程序結構.

1.預處理 : 預定義符號,宏定義,文件包含,條件編譯.

2.函數(shù) : 函數(shù)的定義,函數(shù)的申明,函數(shù)的調(diào)用,函數(shù)特殊參數(shù)的傳遞,標準I/O.

3.控制語句 : 條件判斷語句,循環(huán)語句,無條件跳轉語句,轉向語句.

----------------------------------------------------------------------------------------------

一、數(shù)據(jù)類型:

1.基本數(shù)據(jù)類型:

整型: int unsigned int : 數(shù)據(jù)長度4字節(jié).

short unsigned short : 數(shù)據(jù)長度2字節(jié).

long unsigned long : 數(shù)據(jù)長度4字節(jié).

編程中表示方法: 8進制表示(0****),十進制表示(****),十六進制表示(0x********).

字符型: char : 數(shù)據(jù)長度1字節(jié).

unsigned char : 數(shù)據(jù)長度1字節(jié).

編程中表示方法: ASCII碼(十進制整型數(shù))表示,單個字符表示'a'.

浮點型: float : 數(shù)據(jù)長度4字節(jié),6~7位有效數(shù)字(十進制).

double : 數(shù)據(jù)長度8字節(jié),15~16位有效數(shù)字(十進制).

long double : 數(shù)據(jù)長度8字節(jié),18~19位有效數(shù)字(十進制).

有效數(shù)字 : 非零數(shù)位開始的數(shù)位的個數(shù).

編程中表示方法: 十進制表示,指數(shù)形式表示 : <十進制數(shù)>E(e)<指數(shù)>.比如2.38743E3 = 2387.43.

2.其它數(shù)據(jù)類型:

1.數(shù)組 : 數(shù)組就是同種數(shù)據(jù)類型數(shù)據(jù)的一個集合.數(shù)組中的元素(數(shù)據(jù))在內(nèi)存中是按順序存儲的.

2.指針 : 存儲設備中每一個字節(jié)的存儲空間都有一個地址,這個地址C語言中我們稱之為指針.指針變量就是用于存儲指針的變量.

3.結構體: 結構體用于保存多種數(shù)據(jù)類型的數(shù)據(jù).一個結構體中可以包含多種數(shù)據(jù)類型的變量,這些變量我們稱之為結構體成員.

4.共用體: 共用體與結構體幾乎一模一樣,區(qū)別在于結構體的大小由結構體成員的數(shù)據(jù)長度和決定.而共用體的大小由共用體中大數(shù)據(jù)長度的成員的數(shù)據(jù)長度決定.

5.void型: void可以表示"空",也就是沒有,比如void test(){}就表示函數(shù)沒有返回值.

void也可以表示任意數(shù)據(jù)類型,比如void a;就表示變量a的數(shù)據(jù)類型沒有定義,可以根據(jù)需要進行數(shù)據(jù)傳入.

6.枚舉類型: 不做介紹.

3.volatile類型修飾符:

volatile作為關鍵字,確保指令不會因為編譯器的優(yōu)化而省略,也就是防止編譯器對相應代碼進行優(yōu)化刪除.

例如 : int a[3];

a[0] = 1;

a[0] = 2;

a[0] = 3;

這段代碼在機器中表示不同的操作,會依次執(zhí)行.但編譯器會將上面4條語句優(yōu)化為 : int a[3];

a[0] = 3;

這樣就省略中間兩條代碼.而鍵入volatile(volatile int a[3];)就能避免編譯器的優(yōu)化而依次執(zhí)行所有語句.

4.數(shù)據(jù)類型強制轉換:

數(shù)據(jù)類型強制轉換就是將一種數(shù)據(jù)類型轉換為另外一種數(shù)據(jù)類型.

轉換方法: (強轉數(shù)據(jù)類型)<變量名>.

c語言中,float型數(shù)據(jù)在進行運算時是自動轉換為double型數(shù)據(jù)進行處理的.

比如: int a = 3;

printf("%f",(float)a);

----------------------------------------------------------------------------------------------


二、"字"與"字節(jié)序":

1."字和"字長":

能夠由計算機一次完成處理的數(shù)據(jù)稱之為字,不同CPU體系結構的字長會有所區(qū)別.現(xiàn)在通用的處理器(32位)字長是4字節(jié)(32bit).對于64位處理器而言,它的字長就是8字節(jié)(64bit).我們不要將"字長"與"數(shù)據(jù)長度"混淆,更不要與"字節(jié)"混淆.

2.字節(jié)序:

字節(jié)序是數(shù)據(jù)在內(nèi)存中的存儲方式.是一個字中,各個字節(jié)在內(nèi)存中存放的順序.

1.大端模式: 數(shù)據(jù)的高字節(jié)存儲在低地址中,低字節(jié)存儲在高地址中.

2.小端模式: 數(shù)據(jù)的高字節(jié)存儲在高地址中,低字節(jié)存儲在低地址中.

比如對于多字節(jié)數(shù)據(jù)0x4567ABCD

----------------- -----------------

地址 數(shù)據(jù) 地址 數(shù)據(jù)

0x0000000C CD 0x0000000C 45

0x00000008 AB 0x00000008 67

0x00000004 67 0x00000004 AB

0x00000000 45 0x00000000 CD

大端模式 小端模式

預處理:

預處理是編譯前所做的工作.編譯前,編譯器自動調(diào)用預處理程序?qū)υ创a中'#'開頭的預處理部分進行處理,處理完畢之后,進入源碼的編譯階段.

1.預定義符號:

常用的預定義符號: __FILE__ : 編譯的源文件名.

__FUNCTION__ : 當前所在函數(shù)的函數(shù)名.

__DATE__ : 編譯日期.

__TIME__ : 編譯時間.

2.宏定義: 自定義一個宏(要符合標識符的命名規(guī)則),用于表示任意數(shù)據(jù)或者表達式.

無參宏定義: #define 宏名 宏替換

比如: #define A 35 //A就代表整型數(shù)據(jù)35.

#define TEST "abddgdsfdlfj" //TEST就代表"abddgdsfdlfj"

#define TEST abddgdsfdlfj //TEST就代表abddgdsfdlfj

帶參宏定義: #define 宏名(參數(shù)表) 宏替換

比如: #define M(a,b) a+b-2

K = M(1,2) + 4;

---> K = (1 + 2) - 3 + 4

3.文件包含:

#include //包含系統(tǒng)頭文件.

#include "name.h" //包含自定義頭文件.

文件包含允許嵌套,即在一個被包含文件中可以包含其它文件.

4.條件編譯: 根據(jù)不同的條件編譯不同代碼段.

#ifdef 宏名 //如果定義了宏"宏名",則編譯代碼段. #ifndef 宏名 //定義了宏"宏名",則編譯代碼段

代碼段; 代碼段;

#endif #endif

#ifdef 宏名 //如果定義了宏"宏名",則編譯代碼段1,否則編譯代碼段2;

代碼段1;

#else

代碼段2;

#endif

---------------------------------------------------------------------------------------------

#ifndef 宏名 //如果沒有定義宏"宏名",則編譯代碼段1,否則編譯代碼段2;

代碼段1;

#else

代碼段2;

#endif

---------------------------------------------------------------------------------------------

#if 表達式 //判斷表達式的邏輯值(真或假),若邏輯值為真,則編譯代碼段1,否則編譯代碼段2.

代碼段1;

#else

代碼段2;

#endif

----------------------------------------------------------------------------------------------

三、常量的定義:

1.const關鍵字定義常量:

1.普通常量: <數(shù)據(jù)類型> <常量名> = <常量值>;

2.const涉及指針: 暫時不做講解,有興趣的同學課后可以看看.

<數(shù)據(jù)類型> *<指針變量名>;

: const修飾的是常量數(shù)據(jù).指針變量存儲的指針(地址)可以改變,但是存儲的指針(地址)指向的數(shù)據(jù)是一個不

能改變的常量。

<數(shù)據(jù)類型> *const <指針常量名>;

: const修飾的是常量指針.指針的指向,也就是指針本身是一個不能改變的常量,但指針指向的數(shù)據(jù)可以改變.

2.宏定義常量:

#define 宏名 常量

比如: #define A 35 //A就表示常量值35.任何地方使用宏A等于使用整型常量35.

變量,運算符與表達式.

局部變量與全局變量簡介.

四、總結:

上面是本人對于C基礎知識做出的總結,如果有哪位小伙伴對C感興趣的話,可以私信我回復“資料”,我這里整理了許多對小白有用處的資料歡迎大家一起討論學習C.

網(wǎng)頁名稱:C語言——基礎知識——預處理,常量定義,數(shù)據(jù)類型
URL地址:http://bm7419.com/news/101628.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作網(wǎng)站維護、全網(wǎng)營銷推廣外貿(mào)建站、網(wǎng)站收錄、網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名