2021-02-18 分類: 網(wǎng)站建設(shè)
數(shù)據(jù)類型,預(yù)處理,常量的定義,變量及運算符.
----------------------------------------------------------------------------------------------------
C語言語法體系: 基本所有高級語言都可以這樣劃分.
1.數(shù)據(jù)類型 :
1.基本數(shù)據(jù)類型 : 整型,字符型,浮點型(float,double).
2.數(shù)組類型 : 一維數(shù)組(數(shù)組與字符串),二維數(shù)組,多維數(shù)組.
3.指針類型.
4.結(jié)構(gòu)體類型.
5.共用體類型.
6.void空類型.
7.枚舉型.
2.運算符與表達式.
3.C語言程序結(jié)構(gòu).
1.預(yù)處理 : 預(yù)定義符號,宏定義,文件包含,條件編譯.
2.函數(shù) : 函數(shù)的定義,函數(shù)的申明,函數(shù)的調(diào)用,函數(shù)特殊參數(shù)的傳遞,標準I/O.
3.控制語句 : 條件判斷語句,循環(huán)語句,無條件跳轉(zhuǎn)語句,轉(zhuǎ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.指針 : 存儲設(shè)備中每一個字節(jié)的存儲空間都有一個地址,這個地址C語言中我們稱之為指針.指針變量就是用于存儲指針的變量.
3.結(jié)構(gòu)體: 結(jié)構(gòu)體用于保存多種數(shù)據(jù)類型的數(shù)據(jù).一個結(jié)構(gòu)體中可以包含多種數(shù)據(jù)類型的變量,這些變量我們稱之為結(jié)構(gòu)體成員.
4.共用體: 共用體與結(jié)構(gòu)體幾乎一模一樣,區(qū)別在于結(jié)構(gòu)體的大小由結(jié)構(gòu)體成員的數(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作為關(guān)鍵字,確保指令不會因為編譯器的優(yōu)化而省略,也就是防止編譯器對相應(yīng)代碼進行優(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ù)類型強制轉(zhuǎn)換:
數(shù)據(jù)類型強制轉(zhuǎn)換就是將一種數(shù)據(jù)類型轉(zhuǎn)換為另外一種數(shù)據(jù)類型.
轉(zhuǎn)換方法: (強轉(zhuǎn)數(shù)據(jù)類型)<變量名>.
c語言中,float型數(shù)據(jù)在進行運算時是自動轉(zhuǎn)換為double型數(shù)據(jù)進行處理的.
比如: int a = 3;
printf("%f",(float)a);
----------------------------------------------------------------------------------------------
二、"字"與"字節(jié)序":
1."字和"字長":
能夠由計算機一次完成處理的數(shù)據(jù)稱之為字,不同CPU體系結(jié)構(gòu)的字長會有所區(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
大端模式 小端模式
預(yù)處理:
預(yù)處理是編譯前所做的工作.編譯前,編譯器自動調(diào)用預(yù)處理程序?qū)υ创a中'#'開頭的預(yù)處理部分進行處理,處理完畢之后,進入源碼的編譯階段.
1.預(yù)定義符號:
常用的預(yù)定義符號: __FILE__ : 編譯的源文件名.
__FUNCTION__ : 當(dāng)前所在函數(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 <name.h> //包含系統(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關(guān)鍵字定義常量:
1.普通常量: <cosnt> <數(shù)據(jù)類型> <常量名> = <常量值>;
2.const涉及指針: 暫時不做講解,有興趣的同學(xué)課后可以看看.
<const> <數(shù)據(jù)類型> *<指針變量名>;
: const修飾的是常量數(shù)據(jù).指針變量存儲的指針(地址)可以改變,但是存儲的指針(地址)指向的數(shù)據(jù)是一個不
能改變的常量。
<數(shù)據(jù)類型> *const <指針常量名>;
: const修飾的是常量指針.指針的指向,也就是指針本身是一個不能改變的常量,但指針指向的數(shù)據(jù)可以改變.
2.宏定義常量:
#define 宏名 常量
比如: #define A 35 //A就表示常量值35.任何地方使用宏A等于使用整型常量35.
變量,運算符與表達式.
局部變量與全局變量簡介.
四、總結(jié):
上面是本人對于C基礎(chǔ)知識做出的總結(jié),如果有哪位小伙伴對C感興趣的話,可以私信我回復(fù)“資料”,我這里整理了許多對小白有用處的資料歡迎大家一起討論學(xué)習(xí)C.
分享標題:C語言——基礎(chǔ)知識——預(yù)處理,常量定義,數(shù)據(jù)類型
文章URL:http://www.rwnh.cn/news28/101628.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、網(wǎng)站排名、外貿(mào)網(wǎng)站建設(shè)、用戶體驗、網(wǎng)站制作、建站公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容