1- C語言語法基礎_第1頁
1- C語言語法基礎_第2頁
1- C語言語法基礎_第3頁
1- C語言語法基礎_第4頁
1- C語言語法基礎_第5頁
已閱讀5頁,還剩50頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

教學內(nèi)容: 第1章:C語言語法基礎第2章:C程序設計基礎第3章:利用數(shù)組處理同類型的批量數(shù)據(jù)第4章:利用函數(shù)實現(xiàn)模塊化程序設計第5章:靈活使用指針第6章:結構體、共用體、枚舉類型及其應用第7章:常用的三種線性數(shù)據(jù)結構第8章:利用文件進行數(shù)據(jù)管理第9章:嵌入式技術基礎實踐方法C語言程序設計第1章C語言語法基礎【學習內(nèi)容】1.1C語言程序的特點1.2數(shù)據(jù)的基本類型及其表現(xiàn)形式

1.3運算符及表達式【學習目標】1.了解通用計算機和嵌入式計算機的區(qū)別;2.熟悉C語言程序的特點;

3.熟練使用VC++2010開發(fā)環(huán)境;

4.掌握C語言基本的數(shù)據(jù)類型(整型、字符型、實型),常量和變量;

5.掌握“算術、強制類型轉換、賦值、關系、邏輯、位、逗號”7種運算符及其表達式。1.1C語言程序的特點

產(chǎn)生于20世紀70年代的C語言是國際上廣泛流行的計算機高級編程語言,其優(yōu)點:①語法靈活、運算符豐富;②模塊化和結構化設計,程序可讀性好;③可直接對硬件進行操作,能實現(xiàn)匯編語言的大部分功能;④生成的目標代碼質量高,程序執(zhí)行效率高;⑤程序可移植性好(與匯編語言相比),可用于各種型號的計算機和各種操作系統(tǒng)。

C語言既是通用計算機軟件設計的基礎語言,也是當前嵌入式軟件設計的主流語言。通過本書的學習,可以奠定C語言的編程基礎,同時也可以掌握嵌入式軟件設計方法。1.1C語言程序的特點1、通用計算機與嵌入式計算機

微型計算機具有很大的通用性,所以又稱通用計算機。測控領域的計算機系統(tǒng)是嵌入到應用系統(tǒng)中,以計算機技術為基礎,軟硬件可裁剪,適應應用系統(tǒng)對功能、成本、體積、可靠性、功耗嚴格要求的專用計算機系統(tǒng),即嵌入式計算機系統(tǒng),簡稱嵌入式系統(tǒng)(EmbeddedSystem)。通俗地說,除了通用計算機(如臺式計算機和筆記本計算機)外,所有包含CPU的系統(tǒng)都是嵌入式系統(tǒng),其中以微控制器(MicroControllerUnit,MCU,國內(nèi)也稱為單片機)為核心的嵌入式系統(tǒng)應用最廣泛。MCU的硬件集成度越來越高,使得嵌入式硬件設計難度不斷降低,因此嵌入式軟件設計在整個嵌入式系統(tǒng)開發(fā)中所占的分量越來越大。社會對嵌入式軟件設計人才的需求量也越來越大,其就業(yè)薪酬高。嵌入式軟件設計的主流語言是C語言。C語言程序設計一般要經(jīng)過4個基本步驟(VC++2010開發(fā)環(huán)境的使用方法和步驟請掃描教材中的二維碼詳細學習):

(1)編輯源程序(.c文件或

.h文件);

(2)對源程序進行編譯,生成二進制目標文件(.obj文件);

(3)連接若干個源文件和庫函數(shù)對應的多個目標程序,生成可執(zhí)行文件(.exe文件);(4)運行程序。2、VC++2010開發(fā)環(huán)境的使用方法和步驟1.1C語言程序的特點【例1.1】將兩個整數(shù)求和,并將這兩個整數(shù)及求和結果輸出在PC屏幕上。3、初識簡單的C程序1.1C語言程序的特點#include<stdio.h>

//(1)預處理命令:包含輸入輸出頭文件intmain(void)

//(2)主函數(shù){ inta,b,s;

//(3)數(shù)據(jù)聲明:定義3個整型變量a=123;b=456;

//(4)分別對變量a和b進行賦值s=a+b;

//(5)將求和結果賦給變量sprintf("ThisismyfirstCprogram.\n");//(6)原樣輸出一串字符printf("a=%d,b=%d,sum=%d\n",a,b,s);//(7)以十進制形式輸出三個變量的值return0;

//(8)如程序正常結束,返回函數(shù)值0}可省略不寫格式輸出函數(shù)printf的用法1.1C語言程序的特點3、初識簡單的C程序【例1.2】使用函數(shù)將兩個整數(shù)求和,并將這兩個整數(shù)及求和結果輸出在PC屏幕上。#include<stdio.h>

//(1)預處理命令:包含輸入輸出頭文件intadd(intx,inty);

//(2)函數(shù)聲明intmain(void)

//(3)主函數(shù){inta,b,s;

//(4)數(shù)據(jù)聲明:定義3個整型變量a=123;b=456;

//(5)分別對變量a和b進行賦值s=add(a,b);

//(6)調(diào)用add函數(shù)(兩個實際參數(shù)a、b)printf("ThisismysecondCprogram.\n");//(7)原樣輸出一串字符printf("a=%d,b=%d,sum=%d\n",a,b,s);//(8)以十進制形式輸出三個變量的值}intadd(intx,inty)

//(10)定義add函數(shù)(兩個形式參數(shù)x、y){

intz;

//(11)定義變量

z=x+y;

//(12)將求和結果賦給變量zreturn(z);

//(13)向主調(diào)函數(shù)求和結果}s=add(a,b);

(main函數(shù))intadd(intx,inty)(add函數(shù)){

intz; z=x+y;

return(z);

}1.2數(shù)據(jù)的基本類型及其表現(xiàn)形式

1.2.1常量和變量1、常量1.2數(shù)據(jù)的基本類型及其表現(xiàn)形式

在程序執(zhí)行過程中,其值不發(fā)生改變的量稱為常量。根據(jù)書寫方式,常量可分為直接常量和符號常量。(1)直接常量:如4、23;1.23;'a'、'b';''CHINA''等(2)符號常量:用#define指令,指定一個標識符代表一個常量。

例如,#definePI3.1415926//定義符號常量PI(代表常量3.1415926)

關于#define指令的使用方法,將在任務2.5中詳細介紹。1.2.1常量和變量1、常量1.2數(shù)據(jù)的基本類型及其表現(xiàn)形式

用戶定義的標識符不能與系統(tǒng)提供的關鍵字(參見附錄B)同名。另外,標識符區(qū)分大小寫,如Sum和sum是兩個不同的標識符。說明:標識符是用來標識變量名、符號常量名、函數(shù)名、數(shù)組名、類型名、宏名、文件名的有效字符序列。C語言的標識符只能由字母、數(shù)字、下畫線3種字符組成,且第一個字符必須是字母或下畫線。

1.2.1常量和變量2、變量1.2數(shù)據(jù)的基本類型及其表現(xiàn)形式

在程序執(zhí)行過程中,其值可以改變的量稱為變量。變量必須“先定義,后使用”。定義變量后,編譯系統(tǒng)為每個變量名分配對應的內(nèi)存地址,即一個變量名對應一個存儲單元。1.2.2整型數(shù)據(jù)1、整型常量1.2數(shù)據(jù)的基本類型及其表現(xiàn)形式

(3)十六進制整數(shù):以0x開頭的數(shù)。如0x123表示十六進制數(shù)123。在C語言中,整型常量(整型常數(shù))有3種表示形式:(1)十進制整數(shù):如123、-456、7。(2)八進制整數(shù):以0開頭的數(shù)。如0123表示八進制數(shù)123。歸納起來,有10種整型變量,在VC++系統(tǒng)中對應的數(shù)值范圍如下:(1)整型變量的分類1.2.2整型數(shù)據(jù)2、整型變量1.2數(shù)據(jù)的基本類型及其表現(xiàn)形式

1.2.2整型數(shù)據(jù)2、整型變量1.2數(shù)據(jù)的基本類型及其表現(xiàn)形式

(2)整型變量在內(nèi)存中的存儲形式(以單字節(jié)整型數(shù)據(jù)為例)(3)定義整型變量的方法1.2.2整型數(shù)據(jù)2、整型變量1.2數(shù)據(jù)的基本類型及其表現(xiàn)形式

1)定義一個變量的格式:類型標識符變量名;

例如:inti;//定義有符號基本整型變量i

unsignedintj;//定義無符號基本整型變量j2)同時定義多個同類型變量的格式:類型標識符

變量名1,變量名2,變量名3,…;

例如:inti,j,k;//同時定義三個基本整型變量i、j、k

定義變量后,系統(tǒng)將根據(jù)變量的類型給變量分配對應大小的內(nèi)存空間,用于存儲該變量。例如:

shortint

i;//定義短整型變量i

i=10;//給變量i賦值練習:【例1.3】整型變量的定義、賦值和輸出。1.2.3字符型數(shù)據(jù)1、字符常量1.2數(shù)據(jù)的基本類型及其表現(xiàn)形式

練習:【例1.4】輸出轉義字符。

用一對單撇號括起來的一個字符,稱為字符常量,例如:'A','6','+'等。

C語言還有一種以

\開頭的字符序列,稱為轉義字符。

請參考附錄A,熟悉字符0~9、大寫字母A~Z、小寫字母a~z對應的ASCII碼值。1.2.3字符型數(shù)據(jù)2、字符變量1.2數(shù)據(jù)的基本類型及其表現(xiàn)形式

字符變量用來存放字符,并且只能存放1個字符。其類型標識符是char。

例如:charc1,c2;//定義字符變量c1、c2c1='a';c2='b';//給變量c1賦值'a',變量c2賦值'b'3、字符型數(shù)據(jù)在內(nèi)存中的存儲形式及使用方法

一個字符變量在內(nèi)存中占一個字節(jié)。字符型數(shù)據(jù)在內(nèi)存中存儲的是該字符對應的ASCII碼。

字符型數(shù)據(jù)的存儲形式與單字節(jié)整型數(shù)據(jù)相同。因此,字符型可以當作單字節(jié)整型。

#include<stdio.h>intmain(void){

charc1,c2,c3,c4;

//定義字符變量c1='a';c2='A';//給字符變量賦字符常量

c3=97;c4=65;//給字符變量賦整數(shù)(ASCII碼值)printf("%c,%c,%c,%c\n",c1,c2,c3,c4);//以字符形式輸出字符變量的值printf("%d,%d,%d,%d\n",c1,c2,c3,c4);//以十進制形式輸出字符變量的值printf("%x,%x,%x,%x\n",c1,c2,c3,c4);//以十六進制形式輸出字符變量的值}1.2.3字符型數(shù)據(jù)1.2數(shù)據(jù)的基本類型及其表現(xiàn)形式

【例1.5】字符變量的定義、賦值和輸出。#include<stdio.h>intmain(void){charc1,c2;//定義字符變量

c1='a';c2='b';

//給字符變量賦字符常量

c1=c1-32;c2=c2-32;

//將字符變量對應的ASCII碼值更新

printf("%c,%c\n",c1,c2);//以字符形式輸出變量c1和c2的值

}1.2.3字符型數(shù)據(jù)1.2數(shù)據(jù)的基本類型及其表現(xiàn)形式

【例1.6】輸出給定小寫字母對應的大寫字母。4、字符串常量

1.2.3字符型數(shù)據(jù)1.2數(shù)據(jù)的基本類型及其表現(xiàn)形式

字符串常量是由一對雙撇號括起來的字符序列。例如:"CHINA","Cprogram","a","$12.5"字符常量和字符串常量的區(qū)別:因此字符串常量"CHINA"在內(nèi)存中占用6個字節(jié)?!舅伎肌孔址A?a'和字符串常量"a"有何區(qū)別?練習:【例1.7】輸出字符串常量及其占用內(nèi)存的字節(jié)數(shù)。1.2.4實型數(shù)據(jù)1.2數(shù)據(jù)的基本類型及其表現(xiàn)形式

1、實型常量

(2)指數(shù)形式。如123e3或123E3都代表123×103。要注意字母e(或E)之前必須要有數(shù)字,且e后面的指數(shù)必須為整數(shù),如e2、4e2.5、.e3、e都不是合法的指數(shù)形式。

實型常量也稱實數(shù),在C語言中,實數(shù)有兩種表示形式:

(1)十進制小數(shù)形式。它由數(shù)字和小數(shù)點組成(注意,必須要有小數(shù)點)。如:0.123、123.、123.0、0.0。

一個實數(shù)可以有多種指數(shù)表示形式。在程序中以指數(shù)形式輸出一個實數(shù)時,會以規(guī)范化的指數(shù)形式輸出。

例如123.456的規(guī)范化指數(shù)形式是1.23456e2。2、實型變量

根據(jù)數(shù)據(jù)的數(shù)值范圍和精度,實型變量的類型主要有單精度(float)型和雙精度(double)型。需要注意:實型數(shù)據(jù)在計算機內(nèi)存中的存儲精度有限,不可能得到完全精確的數(shù)值。1.2.4實型數(shù)據(jù)1.2數(shù)據(jù)的基本類型及其表現(xiàn)形式

#include<stdio.h>intmain(void){

floatx;//定義實型變量xx=12.3;//將實型常數(shù)12.3賦給變量xprintf("%f\n",x);//以小數(shù)形式輸出變量x的數(shù)值printf("%e\n",x);//以指數(shù)形式輸出變量x的數(shù)值}【例1.8】實型變量的定義、賦值和輸出。練習:【例1.9】利用sizeof運算符測試系統(tǒng)中數(shù)據(jù)類型的長度。1.2.5變量的初始化1.2數(shù)據(jù)的基本類型及其表現(xiàn)形式

C語言允許在定義變量的同時,對變量賦初值,即變量的初始化。例如:

inta=3;

//定義整型變量a,并賦初值3floatb=1.23;//定義實型變量b,并賦初值1.23charc='a';

//定義字符變量c,并賦初值'a'

當一次定義同類型的多個變量時,可以給全部變量或部分變量賦初值。inta,b,c=5;

//定義a、b、c三個整型變量,只給c賦初值5注意,對3個變量賦相同的初值3時,不能寫成:inta=b=c=3;inta=1,b=2,c=3;

//定義a、b、c三個整型變量,并賦不同的初值inta=3,b=3,c=3;

//定義a、b、c三個整型變量,并賦相同的初值3練習:【例1.10】變量的初始化和輸出。1.2.6常變量1.2數(shù)據(jù)的基本類型及其表現(xiàn)形式

練習:【例1.11】常變量的初始化與輸出。

在定義變量并對變量初始化時,如果加上關鍵字const,則變量的值在程序運行期間不再改變,這種變量稱為常變量(constantvariable),也稱為只讀變量。例如:constinta=5;

//用const聲明整型變量a為常變量,其值始終是51.3運算符及表達式

1.3.1算術運算符及其表達式1.3.2強制類型轉換運算符及其表達式1.3.3賦值運算符及其表達式1.3.4關系運算符及其表達式1.3.5邏輯運算符及其表達式1.3.6位運算符及其表達式1.3.7

逗號運算符及其表達式1.3.1算術運算符及其表達式1、基本的算術運算符1.3運算符及表達式

(2)-

減法運算符,或負值運算符,如7-2、-4

(1)+

加法運算符,或正值運算符,如2+3、+5

(4)/

除法運算符,如5/2、5.0/2

(3)*乘法運算符,如2*3

(5)%模運算符,或稱求余運算符,%兩側均應為整型數(shù)據(jù),如5%2的值為1

說明:

【例1.12】將三位十進制整數(shù)的百位數(shù)、十位數(shù)和個位數(shù)分離。#include<stdio.h>intmain(void){inta=123;

intb,c,d;//3個變量分別存放個位數(shù)、十位數(shù)和百位數(shù)

b=a%10;//獲得個位數(shù)

a=a/10;//右移1位,變量a的值更新為12

c=a%10;//獲得十位數(shù)

a=a/10;//右移1位,變量a的值更新為1

d=a%10;//獲得百位數(shù)

printf("123的百位數(shù)=%d\n",d);//輸出百位數(shù)

printf("123的十位數(shù)=%d\n",c);//輸出十位數(shù)

printf("123的個位數(shù)=%d\n",b);//輸出個位數(shù)}1.3.1算術運算符及其表達式1、基本的算術運算符1.3運算符及表達式

練習:【例1.13】將一個正整數(shù)倒序輸出。【例1.14】不同類型數(shù)據(jù)之間的混合運算。自增運算符++:使變量的值自增1,相當于i=i+1。自減運算符--:使變量的值自減1,相當于i=i-1。有以下4種形式的表達式:

i++

表達式先用i的值,然后對i的值加1(先用后加)

++i

先對i的值加1,然后表達式用i加1的值(先加后用)--i

先對i的值減1,然后表達式用i減1的值(先減后用)

i--

表達式先用i的值,然后對i的值減1(先用后減)1.3.1算術運算符及其表達式2、自增、自減運算符1.3運算符及表達式

可見,由自增(自減)運算符構成不同形式的表達式時,對變量而言,自增1(自減1)都具有相同的效果,但對表達式而言卻有著不同的值。1.3.1算術運算符及其表達式2、自增、自減運算符【例1.15】自增、自減運算符的應用。1.3運算符及表達式

說明:

(1)自增、自減運算符只能用于變量,不能用于常量或表達式。如5++或(a+b)++都是不合法的。(2)自增、自減運算符常用在循環(huán)語句中,使循環(huán)變量自動加1、減1,這將在后續(xù)單元中學習。#include<stdio.h>intmain(void){int

i=3,j=3,k=3,x=3;

printf("%d\t",i++);printf("i=%d\n",i);

printf("%d\t",++j);printf("j=%d\n",j);

printf("%d\t",k--);printf("k=%d\n",k);

printf("%d\t",--x);printf("x=%d\n",x);}3、算術表達式和運算符的優(yōu)先級與結合性1.3.1算術運算符及其表達式1.3運算符及表達式

算術表達式:用算術運算符和括號將運算對象(常量、變量或表達式)連接起來的、符合C語法規(guī)則的式子。例如:a+b*c-5/2+'a'。C語言規(guī)定了運算符的優(yōu)先級和結合性。在表達式求值時,先按運算符的優(yōu)先級高低次序執(zhí)行,例如:x-y*z相當于x-(y*z)。如果在一個運算對象兩側的運算符的優(yōu)先級相同,則按照規(guī)定的“結合方向(結合性)”處理。

算術運算符的結合方向為“自左向右(左結合性)”,即先左后右。因此a+b-c相當于(a+b)-c。附錄C給出了C語言運算符的優(yōu)先級和結合性,供查詢參考。1.3.2強制類型轉換運算符及其表達式1.3運算符及表達式

強制類型轉換表達式的一般形式:(類型標識符)(表達式)例如:

(int)i

將i轉換為整型(int)x+y

將x轉換成整型后,再與y相加(float)(x+y)

將x+y的結果轉換為float型#include<stdio.h>intmain(void){inti;//定義整型變量i

floatx=2.4F;//定義實型變量x,并賦初值

i=(int)x;//將實型變量x強制轉換為int型

printf("x=%f,i=%d\n",x,i);}【例1.16】將實型數(shù)據(jù)強制轉換為整型。練習:【例1.17】將整型數(shù)據(jù)強制轉換為實型。1、簡單賦值運算符“=”及其表達式1.3.3賦值運算符及其表達式1.3運算符及表達式

簡單賦值表達式的形式:變量=

表達式

賦值表達式中的“表達式”,又可以是一個賦值表達式。賦值運算符是按照“自右向左”的結合順序。

根據(jù)附錄C,賦值運算符的優(yōu)先級僅高于逗號運算符,而低于其他運算符。因此賦值表達式a=3*5等價于a=(3*5),i=a+b等價于i=(a+b)。

賦值表達式“

a=5”的值是5。執(zhí)行運算后,變量a的值也是5。【思考】分析下面各賦值表達式中變量a的值。a=5+(c=7)a=b=c=33a=(b=6)/(c=2)a=(b=2)+(c=5)1273

因此

a=b=5與

a=(b=5)等價。2、復合的賦值運算符及其表達式1.3.3賦值運算符及其表達式1.3運算符及表達式

在簡單賦值運算符“=”之前加上其他運算符,可構成復合的賦值運算符。a*=3等價于a=a*3a-=3等價于a=a-3a*=b+2等價于a=a*(b+2)a+=3等價于a=a+3a/=3等價于a=a/3a%=3等價于a=a%3①a*=b+2②

a*=b+2(將“a*”移到“=”右側)③a=a*

(b+2)

(在“=”左側補上變量名a,并對b+2外加括號)練習:【例1.18】復合賦值運算符的使用。3、類型轉換

如果賦值運算符“=”兩側的數(shù)據(jù)類型不一致,但同為數(shù)值型數(shù)據(jù),在賦值時,系統(tǒng)會自動進行類型轉換。下面介紹3種常見的情況。1.3.3賦值運算符及其表達式(1)將整型數(shù)據(jù)賦給整型變量1.3運算符及表達式

【例1.19】將無符號整型數(shù)據(jù)賦給有符號整型變量。正數(shù)變成了負數(shù)

#include<stdio.h>intmain(void){

unsignedchara=255;

signedcharb;b=a;printf("a=%d\n",a);printf("b=%d\n",b);}3、類型轉換1.3.3賦值運算符及其表達式

如果賦值運算符“=”兩側的數(shù)據(jù)類型不一致,但同為數(shù)值型數(shù)據(jù),在賦值時,系統(tǒng)會自動進行類型轉換。下面介紹3種常見的情況。(1)將整型數(shù)據(jù)賦給整型變量1.3運算符及表達式

【例1.20】將有符號整型數(shù)據(jù)賦給無符號整型變量。負數(shù)變成了正數(shù)

#include<stdio.h>intmain(void){

signed

chara=-1;

unsignedcharb;b=a;printf("a=%d\n",a);printf("b=%d\n",b);}3、類型轉換1.3.3賦值運算符及其表達式

如果賦值運算符“=”兩側的數(shù)據(jù)類型不一致,但同為數(shù)值型數(shù)據(jù),在賦值時,系統(tǒng)會自動進行類型轉換。下面介紹3種常見的情況。(1)將整型數(shù)據(jù)賦給整型變量1.3運算符及表達式

【例1.21】將短字節(jié)整型數(shù)據(jù)賦給長字節(jié)整型變量。無誤#include<stdio.h>intmain(void){

unsignedchar

a=255;

unsignedint

b;b=a;printf("a=%d\n",a);printf("b=%d\n",b);}3、類型轉換1.3.3賦值運算符及其表達式

如果賦值運算符“=”兩側的數(shù)據(jù)類型不一致,但同為數(shù)值型數(shù)據(jù),在賦值時,系統(tǒng)會自動進行類型轉換。下面介紹3種常見的情況。(1)將整型數(shù)據(jù)賦給整型變量【例1.22】將長字節(jié)整型數(shù)據(jù)賦給短字節(jié)整型變量。1.3運算符及表達式

有誤!如何解決?#include<stdio.h>intmain(void){

unsignedchar

a=255,b=1;

unsignedchar

c;c=a+b;printf("a=%d\n",a);printf("b=%d\n",b);printf("c=%d\n",c);}3、類型轉換1.3.3賦值運算符及其表達式

如果賦值運算符“=”兩側的數(shù)據(jù)類型不一致,但同為數(shù)值型數(shù)據(jù),在賦值時,系統(tǒng)會自動進行類型轉換。下面介紹3種常見的情況。(2)將實型數(shù)據(jù)賦給整型變量【例1.23】將實型數(shù)據(jù)賦給整型變量。1.3運算符及表達式

只取了整數(shù)部分#include<stdio.h>intmain(void){

floata=1234.567F;

intb;b=a;printf("a=%f\n",a);printf("b=%d\n",b);}3、類型轉換1.3.3賦值運算符及其表達式1.3運算符及表達式

數(shù)值不變,但變成了實數(shù)

如果賦值運算符“=”兩側的數(shù)據(jù)類型不一致,但同為數(shù)值型數(shù)據(jù),在賦值時,系統(tǒng)會自動進行類型轉換。下面介紹3種常見的情況。(3)將整型數(shù)據(jù)賦給實型變量【例1.24】將整型數(shù)據(jù)賦給實型變量。

通過上述例題可以看出,在賦值運算中,需要根據(jù)數(shù)據(jù)的類型和數(shù)值的范圍為變量指定合適的類型,必要時還需要借助強制類型轉換運算符,以防出錯。

#include<stdio.h>intmain(void){

inta=1234;

floatb;b=a;printf("a=%d\n",a);printf("b=%f\n",b);}1.3.4關系運算符及其表達式1、關系運算符及其優(yōu)先級次序

優(yōu)先級相同(高)優(yōu)先級相同(低)③>大于①<小于②<=小于或等于⑥!=不等于④>=大于或等于⑤==等于

關系運算符的優(yōu)先級低于算術運算符,高于賦值運算符。a=b>c等價于

a=(b>c)例如:

c>a+b等價于

c>(a+b)a==b<c等價于

a==(b<c)a>b==c等價于

(a>b)==c1.3運算符及表達式

2、關系表達式1.3.4關系運算符及其表達式1.3運算符及表達式

用關系運算符將兩個表達式連接起來的式子,稱為關系表達式。a+b>c+d(a=3)>(b=5)'a'<'b'a==3例如:a>ba!=3

關系表達式的值是一個邏輯值:“真”或“假”。例如關系表達式“5==3”的值為“假”,“5>=0”的值為“真”。

關系運算結果,以“1”代表“真”,以“0”代表“假”。關系表達式邏輯值(真、假)關系表達式的值(1、0)a>ba>b+ca!=b+ca>b>c若a=3,b=2,c=1,則:真假假假1000練習:【例1.25】考察關系表達式的值。1.3.5邏輯運算符及其表達式1、邏輯運算符及其優(yōu)先級次序

1.3運算符及表達式

假③!邏輯非①&&邏輯與②||邏輯或

邏輯運算的真值表aba&&ba||b!a真真真假假真假假真真假真假真假假真!a==b||c<d等價于a>b&&c>d等價于a+b>c&&x+y<d等價于幾種運算符的優(yōu)先級次序如右圖所示:!(非)

高算術運算符關系運算符&&和||賦值運算符低(a+b)(>c)(x+y)(<d)&&(a>b)(c>d)&&(!a)(==b)||(c<d)2、邏輯表達式的值

1.3.5邏輯運算符及其表達式1.3運算符及表達式

C語言規(guī)定,參與邏輯運算的操作數(shù)以非0代表“真”,以0代表“假”。邏輯表達式的值,即邏輯運算結果,以數(shù)值1代表“真”,以0代表“假”。例如:(1)若a=3,則!a的值:(4)'a'&&'b'的值:(2)若a=3,b=4,則a&&b的值:(3)3&&0||-4的值:0111在邏輯表達式的求解過程中,有時并非所有的運算都被執(zhí)行。

例如:

(1)a&&b:只有當a為真(非0)時,才需要判斷b的值。只要a為假,就不必判斷b的值,此時整個表達式已確定為假。(2)a||b:只要a為真(非0),就不必判斷b的值。只有a為假,才判斷b。【思考與練習】

1.3.5邏輯運算符及其表達式1.3運算符及表達式

分別寫出下列數(shù)學表達式對應的C語言表達式:

(1)80≤i<89

(2)i<0或i≥100

(3)i≠0i>=80&&i<89i<0||

i>=100i!=0練習:【例1.26】考察邏輯表達式的值。1.3.6位運算符及其表達式1.3運算符及表達式

位運算符含義&按位與|按位或^按位異或~按位取反<<左移>>右移說明:1)位運算符中除“~”以外,均為二目運算符,即要求兩側各有一個運算量。

2)運算量只能是整型或字符型數(shù)據(jù),不能是實型數(shù)據(jù)。

在嵌入式軟件設計中,經(jīng)常用到位運算符:對二進制位進行運算。例如,0x23與0x45按位與:00100011(0x23)

&)01000101(0x45)0&0=0,0&1=0,1&0=0,1&1=11、“按位與”運算符(&)00000001(0x01)1.3.6位運算符及其表達式1.3運算符及表達式

特殊用途:“與0清零、與1保留”——可對數(shù)據(jù)的某些位清零,某些位保留不變。例如,將0x23的高4位清零,低4位保留不變。00100011(0x23)

&)00001111(0x0f)0000

0011

(0x03)2、“按位或”運算符(|)1.3.6位運算符及其表達式1.3運算符及表達式

例如,0x23與0x45按位或:00100011(0x23)

|)01000101(0x45)

特殊用途:“或1置1、或0保留”——可對數(shù)據(jù)的某些位置1,某些位保留不變。0|0=0,0|1=1,1|0=1,1|1=1例如,將0x23的高4位置1,低4位保留不變。00100011(0x23)

|)11110000(0xf0)01011101(0x67)1111

0011

(0xf3)例如,0x23與0x45按位異或:00100011(0x23)

^)01000101(0x45)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論