天天看點

c語言e怎麼表示_C語言基礎知識總結

C語言程式的結構認識

用一個簡單的c程式例子,介紹c語言的基本構成、格式、以及良好的書寫風格,使小夥伴對c語言有個初步認識。

例1:計算兩個整數之和的c程式:

#include

main()

{

int a,b,sum;

a=20;

b=15;

sum=a+b;

printf(“a=%d,b=%d,sum=%dn”,a,b,sum);

}

重點說明:

1、任何一個c語言程式都必須包括以下格式:

main()

{ }

這是c語言的基本結構,任何一個程式都必須包含這個結構。括号内可以不寫任何内容,那麼該程式将不執行任何結果。

2、main()----在c語言中稱之為“主函數”,一個c程式有且僅有一個main函數,任何一個c程式總是從main函數開始執行,main函數後面的一對圓括号不能省略。

3、被大括号{ }括起來的内容稱為main函數的函數體,這部分内容就是計算機要執行的内容。

4、在{ }裡面每一句話後面都有一個分号(;),在c語言中,我們把以一個分号結尾的一句話叫做一個c語言的語句,分号是語句結束的标志。

5、printf(“a=%d,b=%d,sum=%dn”,a,b,sum); ----通過執行這條c語言系統提供給我們直接使用的螢幕輸出函數,使用者即可看到運作結果,本程式運作後,将在顯示器上顯示如下結果:

a=20,b=15,sum=35

6、#include

注意:(1)以#号開頭 (2)不以分号結尾

這一行沒有分号,是以不是語句,在c語言中稱之為指令行,或者叫做“預編譯處理指令”。

7、程式中以 結尾的部分表示程式的注釋部分,注釋可以添加在程式的任何位置,為了提高程式的可讀性而添加,但計算機在執行主函數内容時完全忽略注釋部分,換而言之就是計算機當做注釋部分不存在于主函數中。

C程式的生成過程

C程式是先由源檔案經編譯生成目标檔案,然後經過連接配接生成可執行檔案。

源程式的擴充名為 .c ,目标程式的擴充名為 .obj , 可執行程式的擴充名為 .exe 。

辨別符

在編寫程式時,必須為函數、變量等命名,這個名字稱為辨別符。C語言中辨別符的命名規則如下:

辨別符隻能由字母、數字、下劃線組成;

辨別符的第一個字母必須是字母和下劃線;

辨別符區分大小寫字母,如If和if是兩個完全不同的辨別符。

合法辨別符如下:

A6, b_3 , _mn

非法的辨別符如下:

ab#12 , 8m , tr3:4 , yes no

辨別符不能與程式中具有特殊意義的關鍵字相同,不能與使用者編制的函數名、C語言庫函數相同,在程式中各種辨別符盡量不要重複,以便區分。選擇變量名和其他辨別符時,應注意做到 “見名知義”。

辨別符分為如下三類:

1、關鍵字

關鍵字是具有特定含義的,專門用來說明c語言特定成分的一類辨別符,不能用作使用者的辨別符。

auto

break

case

char

union

do

double

else

enum

extern

goto

if

int

long

short

signed

static

sizof

struct

switch

unsigned

void

for

while

typedef

continue

float

return

typedef

default

2、預定義辨別符

預定義辨別符在c語言中也有特定的含義,但可以用作使用者辨別符,預定義辨別符分為兩類:

(1)、庫函數名字,比如(printf,scanf,sin,isdigit等)

(2)、編譯處理指令名,比如(define,include)

3、使用者辨別符

使用者根據需要自己定義的辨別符稱為使用者辨別符。無論如何自定義辨別符,都必須符合辨別符的三條命名規則。

常量

在程式運作中,其值不能被改變的量稱為常量。常量有5種類型:整型常量、實型常量、字元常量、字元串常量和符号常量。

(一)數值轉換

數字的四種表現形式:

①:二進制:所有數字由0,1構成,逢二進一,二進制數中不會出現2.。

例:110101

②:八進制:以數字0(注意不是以字母O,o)開頭,所有數字由0~7構成,逢八進一,八進制數中不會出現8。

例:0112,0123,077等

③:十進制:所有數字由0~9構成,逢十進一,十進制數中不會出現10。

例:0,12,-15等

④:十六進制:以0x或者0X(數字0加字母x)開頭,所有數字由0~9,A~F(或者a~f)構成,逢十六進一(其中A、B、C、D、E、F分别代表10、11、12、13、14、15)

例:0x4A、0X14c7等

在計算機内部,數字均以二進制形式表示和存放,使用者輸入的普通十進制數字都要被計算機轉換成二進制才能在計算機内部存儲,同樣計算機的運算結果也為二進制,一般要将其轉換成十進制數再輸出給使用者閱讀,這種轉換通常由計算機自動實作。

(1)将十進制轉換二進制、八進制和十六進制

除法:将十進制數除以2,記錄餘數,得到的商繼續除以2,直到商為0,然後将各次相處所得的餘數從後往前逆序排列,所得餘數數字序列就是該十進制數對應的二進制數。八進制和十六進制轉換方法同上。

例:十進制數13轉換成二進制數的值為1101,轉換八進制為015,轉換成十六進制為D.

(2)将二進制、八進制和十六進制轉換成十進制

乘積求和:将二進制的每一位從低位到高位(右邊為低位,左邊為高位)分别乘以20,21,22。。。。,然後将這些積求和。

例如:(1101)2=(13)10 (317)8=(207)10 (23E)16=(574)10

(3)二進制與八進制、十六進制數之間的互相轉換

①:二進制轉八進制:從右往左每三位一組轉換成十進制數,将所得資料組合就是對應的八進制數(注意:高位不足三位補零)。

例:(010 110 111)2=(267)8

②:二進制轉十六進制:從右往左每四位一組轉換成十進制數,将所得資料組合就是對應的十六進制數(注意:高位不足四位補零)。

例:(0101 1011)2=(5B)16

③:八進制轉化二進制:每一位數字轉換為三位二進制數字

例:(13)8=(001 011)2=(1011)2

(注意:去掉前面的兩個00,因為0在高位沒有意義)

④:十六進制轉化二進制:每一位數字轉換為四位二進制數字

例:(E3)16=(1110 0011)2

(二)整型常量

整型常量有3種形式:十進制整型常量、八進制整型常量和十六進制整型常量。

(注意:c語言中沒有直接表示二進制的整型常量,在c語言源程式中不會出現二進制。)

書寫方式如下:

十進制整型常量:123 , 0 ,-24 , 85L(長整型常量) 等

八進制整型常量:051 ,-026 ,0773 等

十六進制整型常量:0x55 , 0x1101 , 0x , 0x5AC0 , -0xFF。

其中L為長整型。

(三)實型常量

實型常量有兩種表示形式:小數形式和指數形式。

小數形式:5.4 0.074 -23.0

指數形式:5.4e0 4.3e-3 -3.3e4

(1)小數部分為0的實型常量,可以寫為453.0 或453。

(2)用小數表示時,小數點的兩邊必須有數,不能寫成“ .453“和“453.“,而應該寫成“0.453“和“453.0“。

(3)用指數寫法時,e前必須有數字,e後面的指數必須為整數(注意:整數階碼可以是正數,負數,也可以是八進制數、十六進制數,但必須為整數)。

(四)字元常量

字元常量的标志是一對單引号‘ ’,c語言中的字元常量有兩類:

(1)由一對單引号括起來的一個字元,如‘a ’, ‘r’ ,‘#’。注意: ′a′ 和 ′A′ 是兩個不同的字元常量。

(2)由一對單引号括起來,以反斜杠開頭,後跟若幹數字或者字母,比如‘n’,其中““是轉義的意思,後面跟不同的字元表示不同的意思,這類字元常量叫轉義字元。具體如圖所示 。

轉義字元 轉義字元的意義 ASCII碼

n 回車換行 10

t 橫向跳到下一制表位置 9

b 倒退 8

r 回車 13

f 走紙換頁 12

 反斜線符"" 92

' 單引号符 39

” 雙引号符 34

a 鳴鈴 7

ddd 1~3位八進制數所代表的字元

xhh 1~2位十六進制數所代表的字元

(五)字元串常量

C語言中,以雙引号括起來的,由若幹個字元組成的序列即為字元串常量。

例:“ni hao” “happy”等等。

(六)符号常量

符号常量是由宏定義“#define“定義的常量,在C程式中可用辨別符代表一個常量。

例:計算圓的面積的c程式。

#include

#define PI 3.14159

main()

{

float r,s;

r=12.5;

S=PI *r*r;

printf(“s= %f ”,s);

}

說明:#define 是宏定義,此程式中所有出現PI的地方都代表3.14159,同時PI稱為符号常量。習慣上我們用大寫字母來表示符号常量,小寫字母表示變量,這樣比較容易差別。

變量

變量就是其值可以改變的量。變量要有變量名,在記憶體中占據一定的存儲單元,存儲單元裡存放的是該變量的值。不同類型的變量其存儲單元的大小不同,變量在使用前必須定義。

(一)整型變量

整型變量分為4種:基本型(int)、短整型(short int 或short)、長整型(long int 或 long)和無符号型(unsigned int ,unsigned short,unsigned long)。

不同的編譯系統對上述四種整型資料所占用的位數和數值範圍有不同的規定。

類型說明符

說明:

單詞signed來說明“有符号”(即有正負數之分),不寫signed也隐含說明為有符号,unsigned用來說明“無符号”(隻表示正數)。

(二)實型變量

C語言中,實型變量分為單精度類型( float )和雙精度類型( double )兩種。如:

float a , b ;

double m ;

在vc中,float 型資料在記憶體中占4個位元組(32位),double型資料占8個位元組。單精度實數提供7位有效數字,雙精度實數提供15~16位有效數字。實型常量不分float型和double型,一個實型常量可以賦給一個float 型或double型變量,但變量根據其類型截取實型常量中相應的有效數字。

注意:實型變量隻能存放實型值,不能用整型變量存放實型值,也不能用實型變量存放整型值。

(三)字元變量

字元變量用來存放字元常量,定義形式:

char 變量名;

其中關鍵字char定義字元型資料類型,占用一個位元組的存儲單元。

例:char cr1,cr2;

cr1= ‘A’ , cr2=‘B’ ;

将一個字元賦給一個字元變量時,并不是将該字元本身存儲到記憶體中,而是将該字元對應的ASCII碼存儲到記憶體單元中。例如,字元 ′A′ 的ASCII碼為65,在記憶體中的存放形式如下:01000001

由于在記憶體中字元以ASCII碼存放,它的存儲形式和整數的存儲形式類似,是以C語言中字元型資料與整型資料之間可以通用,一個字元能用字元的形式輸出,也能用整數的形式輸出,字元資料也能進行算術運算,此時相當于對它們的ASCII碼進行運算。

類型的自動轉換和強制轉換

當同一表達式中各資料的類型不同時,編譯程式會自動把它們轉變成同一類型後再進行計算。轉換優先級為:

char < int < float < double

即左邊級别“低“的類型向右邊轉換。具體地說,若在表達式中優先級最高的資料是double型,則此表達式中的其他資料均被轉換成double型,且計算結果也是double型;若在表達式中優先級最高的資料是float型,則此表達式中的其他資料均被轉換成float型,且計算結果也是float型。

在做指派運算時,若指派号左右兩邊的類型不同,則指派号右邊的類型向左邊的類型轉換;當右邊的類型高于左邊的類型時,則在轉換時對右邊的資料進行截取。

除自動轉換外,還有強制轉換,表示形式是:

( 類型 )(表達式);

例:(int)(a+b)

讨論:當a值指派為3.4,b值指派為2.7,(int)(a+b)和(int)a+b的值分别為多少?

C運算符認識

C語言的運算符範圍很廣,可分為以下幾類:

1、算術運算符:用于各類數值運算。包括加(+)、減(-)、乘(*)、除(/)、求餘(%)、自增(++)、自減(--)共七種。

2、指派運算符:用于指派運算,分為簡單指派(=)、複合算術指派(+=,-=,*=,/=,%=)和複合位運算指派(&=,|=,^=,>>=,<<=)三類共十一種。

3、逗号運算符:用于把若幹表達式組合成一個表達式(,)。

4、關系運算符:用于比較運算。包括大于(>)、小于(<)、等于(==)、 大于等于(>=)、小于等于(<=)和不等于(!=)六種。

5、邏輯運算符:用于邏輯運算。包括與(&&)、或(||)、非(!)三種。

6、條件運算符:這是一個三目運算符,用于條件求值(?:)。

7、位操作運算符:參與運算的量,按二進制位進行運算。包括位與(&)、位或(|)、位非(~)、位異或(^)、左移(<<)、右移(>>)六種。

8、指針運算符:用于取内容(*)和取位址(&)二種運算。

9、求位元組數運算符:用于計算資料類型所占的位元組數(sizeof)。

10、特殊運算符:有括号(),下标[],成員(→,.)等幾種。

另外,按參與運算的對象個數,C語言運算符可分為:單目運算符 (如 !)、雙目運算符 (如+,- )和三目運算符 (如 ? : )。

算術運算符和算術表達式

一、基本的算術運算符

(1)+(加法運算符或正值運算符,如2+5)。

(2)-(減法運算符或負值運算符,如4-2)。

(3)*(乘法運算符,如3*8)。

(4)/(除法運算符,如11/5)。

/的運算分為兩種情況:

a、“除”的左右兩邊都為整數時,所得結果必然是整數(注意:僅取整數部分,不是四舍五入)

比如:5/2的值為2,不是2.5,1/2的值為0。

b、“除”的左右兩邊至少有一個是實型資料(即小數)時,所得結果為實型資料。

比如:5/2.0的值為2.5,7.0/2.0的值為3.5.

(5)%(模運算符或稱求餘運算符,%兩側均應為整型資料,如9%7的值為2)。

需要說明的是:當運算對象為負數時,所得結果随編譯器不同而不同,在vc中,結果的符号與被除數相同,比如:13%-2值為1,而-15%2值為-1。

二、 算術表達式和運算符的優先級與結合性

算術表達式是用算術運算符和括号将運算量(也稱操作數)連接配接起來的、符合C語言文法規則的表達式。運算對象包括函數、常量和變量等。

在計算機語言中,算術表達式的求值規律與數學中的四則運算的規律類似,其運算規則和要求如下。

(1)在算術表達式中,可使用多層圓括号,但括号必須配對。運算時從内層圓括号開始,由内向外依次計算各表達式的值。

(2)在算術表達式中,對于不同優先級的運算符,可按運算符的優先級由高到低進行運算,若表達式中運算符的優先級相同,則按運算符的結合方向進行運算。

(3)如果一個運算符兩側的操作數類型不同,則先利用自動轉換或強制類型轉換,使兩者具有相同類型,然後進行運算。

三、 自增自減運算符

作用:使變量的值增1或減1。

如:++i,--i (在使用i之前,先使i的值加1、減1)。

i++,i-- (在使用i之後,使i的值加1、減1)。

(1)隻有變量才能用自增運算符 (++)和自減運算符(--),而常量或表達式不能用,如10++或(x+y)++都是不合法的。

(2)++和--的結合方向是“自右向左“,如 -i++ ,i的左邊是負号運算符,右邊是自增運算符,負号運算和自增運算都是 “自右向左“結合的,相當于 -(i++)。

在循環語句中常用到自增(減)運算符,在指針中也常用到該運算符,考生要弄清楚“i++”和“++i”及“i--”和“--i”的差別,特别弄清楚表達式的值和變量的值。

指派運算符與指派表達式

一、指派運算符與指派表達式

指派符号 “=“就是指派運算符,作用是将一個資料賦給一個變量或将一個變量的值賦給另一個變量,由指派運算符組成的表達式稱為指派表達式。一般形式為:

變量名 = 表達式

在程式中可以多次給一個變量指派,每賦一次值,與它相應的存儲單元中的資料就被更新一次,記憶體中目前的資料就是最後一次所指派的那個資料。

例:a=12; 此表達式讀作“将10的值指派給變量a”。

說明:a、如果指派号兩邊的運算對象類型不一緻,系統會自動進行類型轉換,轉換的規則:将指派号右邊表達式的值的類型轉換成指派号左邊變量的類型,

例:int y=3.5; 在變量y中最終存儲的是整數3。

b、 可以将複制表達式的值再指派給變量,形成連續指派。

例如:x=y=25 是一個連續指派表達式,x=y=25 等價于x=(y=25),是以表達式x=y=25 最終的值為25 。

二、複合的指派運算符

在指派運算符之前加上其他運算符可以構成複合指派運算符。其中與算術運算有關的複合運算符是:+=,-=,*=,/=,%= 。

兩個符号之間不可以有空格,複合指派運算符的優先級與指派運算符的相同。表達式n+=1等價于n=n+1,作用是取變量n中的值增1再賦給變量n,其他複合的指派運算符的運算規則依次類推。

如求表達a+=a-=a*a 的值,其中a的初值為12 。

步驟:

(1)先進行“a-=a*a“運算,相當于a=a-a*a=12-144=-132 。

(2)再進行“a+=-132“運算,相當于 a=a+(-132)=-132-132=-264 。

逗号運算符和逗号表達式

在c語言中,逗号除了作為分隔符,還可以用作一種運算符----逗号運算符,用逗号運算符将幾個表達式連接配接起來,例如a=b+c,a=b*c等稱為逗号表達式。

一般形式為:

表達式1 ,表達式2 ,表達式3 , …,表達式n

例:x=2,y=3,z=4

逗号表達式具有從左至右的結合性,即先求解表達式1,然後依次求解表達式2,直到表達式n的值。表達式n的值就是整個逗号表達式的值。上述的逗号表達式的值就是表達式z=4的值4.需要注意的是,逗号運算符是所有運算符中級别最低的。

例:有如下程式段:

main()

{

int a=2,b=4,c=6,x,y;

y=(x=a+b),(b+c);

printf("y=%d,x=%d",y,x);

}

程式顯示結果為:y=6,x=6

讨論:将y=(x=a+b),(b+c);改為y=((x=a+b),b+c) 的程式結果?

關系運算符和關系表達式

一、C語言中的邏輯值

C語言中的邏輯值隻有兩個:真(true)和假(flase)。用非零代表真,用零代表假。是以,對于任意一個表達式,如果它的值為零,就代表一個假值,如果它的值為非零,就代表一個真值。隻要值不是零,不管是正數,負數,整數,實數,都代表一個真值。例如-5的邏輯值為真。

二、邏輯表達式

“&&”和“||”的運算對象有兩個,故它們都是雙目運算符,而!的運算對象隻有一個,是以它是單目運算符。邏輯運算舉例如下:

(1)a&&b: 當&&兩邊都為“真”時,表達式a&&b的值才是真。

值得注意的是:在數學中,關系式0

(2)a||b: 當||兩邊有一個為“真”時,表達式a||b的值就是真。

(3)!a: 表示取反,如果a為真,則!A為假,反之亦然。例如!-5的值就為0.

在C語言中,由&&或||組成的邏輯表達式,在某些特定情況下會産生“短路“現象。

(1)x && y && z ,隻有當x為真(非0)時,才需要判别y的值;隻有x和y都為真時,才需要去判别z的值;隻要x為假就不必判别y和z,整個表達式的值為0。口訣:“一假必假”。

例:(!5==1)&&(++i==0) (!5==1)表達式的值為0,是以計算機運作中就跳過(++i==0)此表達式,(!5==1)&&(++i==0)表達式的值為0.

(2)x||y||z ,隻要x的值為真(非零),就不必判别y和z的值 ,整個表達式的值為1,隻有x的值為假,才需要判别y的值,隻有x和y的值同時為假才需要判别z的值,口訣:“一真必真”。

位運算

一、位運算符

在計算機中,資料都是以二進制數形式存放的,位運算就是指對存儲單元中二進制位的運算。C語言提供6種位運算符。

二、位運算

位運算符 & |~<< >> ∧ 按優先級從高到低排列的順序是:

位運算符中求反運算“~“優先級最高,而左移和右移相同,居于第二,接下來的順序是按位與 “&“、按位異或 “∧“和按位或 “|“。順序為~ << >> & ∧ | 。

例1:左移運算符“<<”是雙目運算符。其功能把“<< ”左邊的運算數的各二進位全部左移若幹位,由“<<”右邊的數指定移動的位數,高位丢棄,低位補0。

例如:

a<<4

指把a的各二進位向左移動4位。如a=00000011(十進制3),左移4位後為00110000(十進制48)。

例2:右移運算符“>>”是雙目運算符。其功能是把“>> ”左邊的運算數的各二進位全部右移若幹位,“>>”右邊的數指定移動的位數。

例如:

設 a=15,

a>>2

表示把000001111右移為00000011(十進制3)。

應該說明的是,對于有符号數,在右移時,符号位将随同移動。當為正數時,最高位補0,而為負數時,符号位為1,最高位是補0或是補1 取決于編譯系統的規定。

例3:設二進制數a是00101101 ,若通過異或運算a∧b 使a的高4位取反,低4位不變,則二進制數b是。

解析:異或運算常用來使特定位翻轉,隻要使需翻轉的位與1進行異或操作就可以了,因為原數中值為1的位與1進行異或運算得0 ,原數中值為0的位與1進行異或運算結果得1。而與0進行異或的位将保持原值。異或運算還可用來交換兩個值,不用臨時變量。

如 int a=3 , b=4;,想将a與b的值互換,可用如下語句實作:

a=a∧b;

b=b∧a;

a=a∧b;

是以本題的答案為: 11110000 。

總結:C語言作為一門非常适合程式設計入門的語言,打好基礎的重要性不言而喻。是以特此奉上這一篇幹貨,希望小夥伴們能從中受益。想要學習更多知識可以關注我哦!

繼續閱讀